
Variables scalaires (`${MA_VARIABLE}`)
Explorez en détail les variables scalaires `${MA_VARIABLE}` dans Robot Framework : définition, utilisation, types de données et création dynamique pour des tests flexibles.
Les variables scalaires : l'unité de base pour vos données de test
Au coeur de la gestion des données dans Robot Framework se trouvent les variables scalaires. Reconnaissables à leur syntaxe distinctive `${NOM_DE_LA_VARIABLE}`, elles sont conçues pour stocker une unique valeur. Cette valeur peut prendre diverses formes : une chaîne de caractères pour un nom d'utilisateur, un nombre pour un identifiant, une valeur booléenne pour un indicateur d'état, ou même l'absence de valeur représentée par `${None}`. La simplicité de leur déclaration et de leur utilisation en fait un outil fondamental pour quiconque souhaite écrire des tests automatisés qui soient à la fois dynamiques et faciles à maintenir.
L'objectif principal de l'utilisation des variables scalaires est d'éviter le "codage en dur" (hardcoding) des valeurs directement dans les étapes de vos tests. En centralisant vos données dans des variables, vous gagnez en flexibilité : si une donnée change (par exemple, une URL de test ou un mot de passe par défaut), il vous suffit de la mettre à jour à un seul endroit, dans la définition de la variable, plutôt que de la chercher et la remplacer dans de multiples cas de test.
Ce sous-chapitre se concentrera sur la définition, les types de données courants, l'utilisation pratique et la création dynamique des variables scalaires, illustrant leur rôle essentiel dans la construction de scénarios de test robustes et adaptables.
Définition et syntaxe des variables scalaires
La manière la plus courante de définir des variables scalaires est au sein de la section `*** Variables ***` de vos fichiers Robot Framework (`.robot` ou `.resource`). La syntaxe est directe : le nom de la variable, encadré par `${` et `}`, est suivi par au moins deux espaces, puis par sa valeur.
Syntaxe de base :*** Variables ***
${URL_APPLICATION} https://mon-site-de-test.com
${LOGIN_STANDARD} utilisateur_test
${MOT_DE_PASSE_STD} P@$$wOrd123!
${PORT_API} 8080
${DELAI_ATTENTE} 15s # Les unités de temps (s, ms, min, h) sont supportées
${MESSAGE_ERREUR} L'opération a échoué. Veuillez réessayer.
${CHEMIN_FICHIER} C:/Users/Testeur/Documents/donnees.csvLe nom de la variable peut contenir des lettres, des chiffres et des underscores (`_`). Bien que Robot Framework soit insensible à la casse pour les noms de variables (c'est-à-dire que `${mavariable}` et `${MaVariable}` font référence à la même variable), il est de bonne pratique d'adopter une convention cohérente, comme l'utilisation de majuscules avec des underscores (`ALL_CAPS_WITH_UNDERSCORES`) pour les constantes, ou le CamelCase (`maVariableScalaire`) pour d'autres usages.
Lorsque vous utilisez une variable dans vos cas de test ou keywords, vous employez la même syntaxe `${NOM_DE_LA_VARIABLE}`. Robot Framework remplacera alors cette expression par la valeur stockée dans la variable au moment de l'exécution.
*** Test Cases ***
Accéder à l'application et se loguer
Open Browser ${URL_APPLICATION} chrome
Input Text id:username ${LOGIN_STANDARD}
Input Password id:password ${MOT_DE_PASSE_STD}
Click Button id:login_button
Page Should Contain Bienvenue, ${LOGIN_STANDARD}Dans cet exemple, `${URL_APPLICATION}`, `${LOGIN_STANDARD}` et `${MOT_DE_PASSE_STD}` seront remplacées par leurs valeurs respectives lors de l'exécution des keywords `Open Browser`, `Input Text`, et `Input Password`.
Types de données courants pour les variables scalaires
Bien que Robot Framework traite de nombreuses variables comme des chaînes de caractères par défaut, il est capable de reconnaître et de travailler avec plusieurs types de données sous-jacents, notamment grâce à l'intégration avec Python. Voici les types les plus courants pour les variables scalaires :
- Chaînes de caractères (Strings) : Le type le plus fréquent. Toute séquence de caractères. Si votre chaîne contient des espaces significatifs au début ou à la fin, ou si elle est vide, il est parfois utile d'utiliser le keyword `Set Variable` ou de s'assurer que la syntaxe est bien interprétée.
*** Variables *** ${NOM_COMPLET} Jean Dupont ${VILLE} Paris ${CHAINE_VIDE} ${EMPTY} # ${EMPTY} est une variable BuiltIn pour une chaîne vide ${ESPACES_AUTOUR} ${{' espaces '}} # Forcer l'interprétation comme chaîne avec espaces - Nombres (Entiers et Flottants) : Les nombres peuvent être définis directement. Robot Framework essaiera de les convertir en types numériques appropriés lorsque nécessaire (par exemple, avec des keywords comme `Should Be Equal As Numbers`).
*** Variables *** ${AGE_UTILISATEUR} 30 ${PRIX_ARTICLE} 19.99 ${QUANTITE} -5 # Les nombres négatifs sont permis - Booléens (Booleans) : Les valeurs booléennes vraies ou fausses. Elles sont définies en utilisant les variables spéciales `${True}` et `${False}`.
L'utilisation de `${True}` (avec un T majuscule) assure que la variable contient la valeur booléenne Python `True`, et non la chaîne de caractères "True".*** Variables *** ${EST_ADMIN} ${True} ${MODE_DEBUG_ACTIF} ${False} - None (Aucune valeur) : Représente l'absence de valeur, similaire à `null` dans d'autres langages. Définie avec la variable spéciale `${None}`.
*** Variables *** ${RESULTAT_OPTIONNEL} ${None} - Variables d'environnement : Vous pouvez accéder aux variables d'environnement du système en utilisant la syntaxe `%{NOM_VARIABLE_ENV}`. Elles sont traitées comme des variables scalaires.
*** Test Cases *** Afficher le chemin utilisateur Log Le répertoire utilisateur est : %{USERPROFILE} # Sur Windows Log Ou : %{HOME} # Sur Linux/macOS
Il est important de noter que lors des comparaisons ou des opérations, Robot Framework peut tenter des conversions de type. Par exemple, si vous comparez `${AGE_UTILISATEUR}` (qui vaut 30) avec la chaîne "30" en utilisant `Should Be Equal`, la comparaison peut réussir car Robot Framework essaie d'être flexible. Cependant, pour des comparaisons strictes de type, ou pour des opérations numériques, il est préférable d'utiliser des keywords spécifiques comme `Should Be Equal As Integers` ou `Convert To Integer`.
Création et modification dynamiques de variables scalaires
Outre la définition statique dans la section `*** Variables ***`, les variables scalaires peuvent être créées ou leur valeur peut être modifiée pendant l'exécution d'un test ou d'un keyword. Cela se fait principalement à l'aide de keywords de la librairie `BuiltIn`.
Le keyword le plus fondamental pour cela est `Set Variable` :
*** Test Cases ***
Création dynamique de variable
${nom_produit} Set Variable Mon Super Produit
Log Le nom du produit est : ${nom_produit}
${timestamp} Get Time epoch # Récupère le timestamp actuel
${id_unique_transaction} Set Variable TRANS_${timestamp}
Log ID de transaction généré : ${id_unique_transaction}La portée par défaut d'une variable créée avec `Set Variable` est locale au keyword ou au cas de test où elle est définie. Pour des portées différentes, Robot Framework propose :
- `Set Test Variable` : Crée une variable accessible n'importe où dans le cas de test courant. Si une variable du même nom existe déjà au niveau du test, sa valeur est écrasée pour ce test uniquement.
*** Test Cases *** Utilisation de Set Test Variable Set Test Variable ${CODE_CLIENT} CLI007 Effectuer Action Client Vérifier Résultat Client *** Keywords *** Effectuer Action Client Log Action pour le client : ${CODE_CLIENT} Vérifier Résultat Client Log Vérification pour le client : ${CODE_CLIENT} - `Set Suite Variable` : Crée une variable accessible dans toute la suite de tests où elle est définie (y compris dans les `Suite Setup` et `Suite Teardown`, et dans tous les cas de test et keywords de cette suite).
*** Settings *** Suite Setup Initialiser Données de Suite *** Test Cases *** Test 1 utilisant variable de suite Log Donnée partagée de suite : ${DONNEE_COMMUNE_SUITE} Test 2 utilisant variable de suite Should Be Equal ${DONNEE_COMMUNE_SUITE} valeur_initiale_suite *** Keywords *** Initialiser Données de Suite Set Suite Variable ${DONNEE_COMMUNE_SUITE} valeur_initiale_suite - `Set Global Variable` : Crée une variable avec une portée globale, accessible depuis n'importe quelle suite de tests, cas de test ou keyword pendant toute la session d'exécution. Son utilisation doit être limitée pour éviter de rendre les tests trop interdépendants et difficiles à déboguer.
Les variables scalaires sont également souvent le résultat de keywords qui retournent une valeur. Lorsqu'un keyword retourne une seule valeur, vous l'assignez à une variable scalaire :
*** Test Cases ***
Récupérer et utiliser une valeur retournée
${element_text} Get Text id:message_important
Should Contain ${element_text} Succès Le message devrait indiquer un succès.
${nombre_elements} Get Element Count xpath=//ul/li
Log Il y a ${nombre_elements} éléments dans la liste.En maîtrisant la définition, les types et la création dynamique des variables scalaires, vous disposez d'un outil puissant pour rendre vos tests Robot Framework plus flexibles, plus lisibles et plus robustes face aux changements.