
Les sections indispensables : `*** Settings ***`, `*** Variables ***`, `*** Test Cases ***`, `*** Keywords ***`
Plongez au coeur des sections fondamentales d'un script Robot Framework : Settings pour la configuration, Variables pour les données, Test Cases pour les scénarios, et Keywords pour la réutilisabilité.
Le quatuor fondamental : au coeur de la structure de vos tests Robot Framework
Comprendre la structure d'un script Robot Framework revient à maîtriser ses sections fondamentales. Ces sections, identifiées par des en-têtes spécifiques comme `*** Settings ***`, `*** Variables ***`, `*** Test Cases ***`, et `*** Keywords ***`, sont les piliers sur lesquels reposent l'organisation, la lisibilité et la maintenabilité de vos projets d'automatisation. Chacune de ces sections joue un rôle distinct mais complémentaire, permettant de séparer clairement les préoccupations : la configuration de l'environnement, la gestion des données, la définition des scénarios de test, et la création de blocs de code réutilisables.
L'adoption de cette structure n'est pas une contrainte, mais plutôt une aide précieuse. Elle guide l'utilisateur, qu'il soit novice ou expérimenté, dans la construction logique de ses tests. En attribuant à chaque type d'information ou d'instruction une place dédiée, Robot Framework favorise une approche modulaire et structurée, essentielle pour les projets d'automatisation d'envergure ou ceux impliquant plusieurs collaborateurs.
Dans les paragraphes suivants, nous allons détailler le rôle et le contenu typique de chacune de ces quatre sections indispensables. Vous découvrirez comment elles interagissent et pourquoi leur bonne utilisation est cruciale pour écrire des scripts Robot Framework efficaces, robustes et faciles à comprendre.
La section `*** Settings ***` : configurer l'environnement de test
La section `*** Settings ***` est le centre de contrôle de votre fichier de test ou de votre fichier de ressources. C'est ici que vous définissez les méta-informations et les dépendances nécessaires à l'exécution correcte de vos tests. Son rôle principal est de préparer le terrain avant que les cas de test ne soient exécutés. Une configuration claire dans cette section simplifie grandement la compréhension globale du fichier.
Parmi les instructions les plus courantes dans la section `*** Settings ***`, on trouve :
- `Library` : Permet d'importer des librairies de test externes ou internes. Les librairies fournissent les keywords que vous utiliserez dans vos cas de test. Par exemple, `Library SeleniumLibrary` rend disponibles tous les keywords pour l'automatisation des tests web. Vous pouvez importer plusieurs librairies. Si des keywords ont le même nom dans différentes librairies, vous pouvez utiliser la syntaxe `NomDeLibrairie.NomDuKeyword` ou donner un alias à une librairie lors de son importation avec `WITH NAME`.
*** Settings *** Library SeleniumLibrary Library OperatingSystem Library MyCustomLibrary.py WITH NAME Custom - `Resource` : Importe des fichiers de ressources. Ces fichiers (`.resource` ou `.robot`) peuvent contenir des variables et des keywords utilisateurs que vous souhaitez partager entre plusieurs suites de tests, favorisant ainsi la réutilisabilité et la modularité.
*** Settings *** Resource ../resources/common_variables.resource Resource keywords/navigation_keywords.robot - `Variables` : Bien qu'il existe une section `*** Variables ***` dédiée, vous pouvez également importer des fichiers de variables Python (variables globales) depuis la section `*** Settings ***`.
*** Settings *** Variables ../config/env_variables.py - `Documentation` : Permet de fournir une description générale de la suite de tests ou du fichier de ressources. Cette documentation est incluse dans les rapports générés, ce qui est utile pour comprendre l'objectif du fichier.
*** Settings *** Documentation Cette suite de tests vérifie les fonctionnalités d'authentification. - `Suite Setup` et `Suite Teardown` : Définissent un keyword à exécuter respectivement une seule fois au début de toute la suite de tests et une seule fois à la fin, après l'exécution de tous les cas de test. Utile pour des initialisations globales (ex: ouvrir une connexion à une base de données) ou des nettoyages finaux.
*** Settings *** Suite Setup Connect To Database my_db_host my_user my_password Suite Teardown Disconnect From Database - `Test Setup` et `Test Teardown` : Spécifient un keyword à exécuter avant (`Test Setup`) et après (`Test Teardown`) chaque cas de test de la suite. Pratique pour des actions répétitives comme ouvrir une nouvelle page de navigateur avant chaque test ou la fermer après.
*** Settings *** Test Setup Open Browser To Login Page Test Teardown Close Browser - `Test Template` : Permet de spécifier un keyword qui sera utilisé comme modèle pour tous les cas de test de la suite. Les cas de test fournissent alors uniquement les arguments pour ce keyword template. Utile pour les tests data-driven.
*** Settings *** Test Template Login with invalid credentials should fail *** Test Cases *** # User Password Invalid User user1 wrong_pass Invalid Password valid_user bad_password - `Force Tags` et `Default Tags` : Appliquent automatiquement des tags à tous les cas de test de la suite. `Force Tags` ne peut pas être surchargé par les tags d'un cas de test, tandis que `Default Tags` peut l'être.
*** Settings *** Force Tags regression sprint-5 Default Tags frontend
Une section `*** Settings ***` bien structurée est la première étape vers des tests clairs et maintenables. Elle agit comme un manifeste pour votre fichier de test, déclarant toutes ses dépendances et configurations initiales.
La section `*** Variables ***` : dynamiser et maintenir vos tests
La section `*** Variables ***` est l'endroit où vous déclarez et initialisez les données qui seront utilisées par vos cas de test et vos keywords utilisateurs. L'utilisation de variables est une pratique essentielle pour créer des tests flexibles, lisibles et faciles à maintenir. Au lieu de coder en dur des valeurs (comme des URLs, des identifiants, des chemins de fichiers, etc.) directement dans les étapes de test, vous les définissez une seule fois comme variables et les réutilisez autant de fois que nécessaire.
Robot Framework supporte plusieurs types de variables :
- Variables scalaires (`${NOM_VARIABLE}`) : Elles contiennent une seule valeur, qu'il s'agisse d'une chaîne de caractères, d'un nombre, d'un booléen, etc. La syntaxe est `${NOM_DE_LA_VARIABLE}`.
*** Variables *** ${URL_ACCUEIL} https://www.certiquizz.com ${BROWSER_UTILISE} firefox ${TIMEOUT_DEFAUT} 30s ${NOMBRE_ITEMS} 10 ${MODE_DEBUG} ${True} - Variables de liste (`@{NOM_LISTE}`) : Elles représentent une séquence ordonnée d'éléments. La syntaxe est `@{NOM_DE_LA_LISTE}`. Les éléments sont séparés par au moins deux espaces.
Vous pouvez accéder aux éléments d'une liste par leur index : `${NAVIGATEURS_SUPPORTES}[0]` (qui vaudra `chrome`).*** Variables *** @{NAVIGATEURS_SUPPORTES} chrome firefox edge @{DONNEES_UTILISATEUR} John Doe john.doe@example.com @{NUMEROS_Gagnants} 1 23 42 50 - Variables de dictionnaire (`&{NOM_DICTIONNAIRE}`) : Elles stockent des paires clé-valeur. La syntaxe est `&{NOM_DU_DICTIONNAIRE}`. Chaque paire clé-valeur est définie avec `clé=valeur`.
Vous pouvez accéder aux valeurs d'un dictionnaire par leur clé : `&{CREDENCIALS_ADMIN}[username]` (qui vaudra `admin`).*** Variables *** &{CREDENCIALS_ADMIN} username=admin password=supersecret &{CONFIG_TEST} url=http://localhost port=8080 user=testeur
Les variables définies dans cette section sont disponibles pour tous les cas de test et keywords utilisateurs au sein du même fichier. Si vous avez besoin de partager des variables entre plusieurs fichiers, il est recommandé de les placer dans un fichier de ressources (`.resource`) et d'importer ce fichier via `Resource` dans la section `*** Settings ***` des fichiers qui en ont besoin. Vous pouvez également créer des variables dynamiquement pendant l'exécution des tests en utilisant des keywords intégrés comme `Set Variable`, `Set Suite Variable`, `Set Global Variable`.
L'utilisation judicieuse des variables permet de :
- Centraliser les données : Facilite les modifications. Si une URL change, vous ne la modifiez qu'à un seul endroit.
- Améliorer la lisibilité : Des noms de variables explicites rendent les tests plus compréhensibles.
- Permettre la paramétrisation : Facilite l'exécution des mêmes tests avec des ensembles de données différents.
La section `*** Test Cases ***` : le scénario de vos vérifications
La section `*** Test Cases ***` est le coeur battant de votre fichier de test. C'est ici que vous décrivez concrètement les scénarios que Robot Framework va exécuter pour vérifier le comportement de l'application sous test. Chaque cas de test représente une séquence d'actions et de vérifications visant à valider une fonctionnalité ou un aspect spécifique du système.
Un cas de test commence par son nom, qui doit être unique et descriptif. Ce nom apparaît dans les rapports d'exécution, il est donc important qu'il reflète clairement l'objectif du test. Sous le nom du cas de test, vous listez les étapes, qui sont essentiellement des appels à des keywords.
*** Test Cases ***
Connexion Réussie Avec Identifiants Valides
[Documentation] Ce test vérifie qu'un utilisateur peut se connecter avec des identifiants corrects.
[Tags] authentification smoke priorite_haute
Ouvrir Le Navigateur Et Accéder A La Page De Connexion
Remplir Le Champ Email Avec utilisateur@example.com
Remplir Le Champ Mot De Passe Avec motdepasse123
Cliquer Sur Le Bouton "Se Connecter"
Vérifier Que L'Utilisateur Est Redirigé Vers Le Tableau De Bord
Vérifier Que Le Message De Bienvenue Contient Bienvenue, utilisateur!
Tentative De Connexion Avec Mot De Passe Incorrect
[Documentation] Vérifie l'affichage d'un message d'erreur lors d'une tentative de connexion avec un mot de passe erroné.
[Tags] authentification negatif
Ouvrir Le Navigateur Et Accéder A La Page De Connexion
Remplir Le Champ Email Avec utilisateur@example.com
Remplir Le Champ Mot De Passe Avec mauvaismotdepasse
Cliquer Sur Le Bouton "Se Connecter"
La Page Devrait Contenir Le Message D'erreur Identifiants incorrects.Dans cette section, vous pouvez également utiliser des settings spécifiques à un cas de test, entre crochets `[]` :
- `[Documentation]` : Fournit une description détaillée du cas de test. Très utile pour la compréhension et la maintenance.
- `[Tags]` : Permet d'associer des étiquettes (tags) à un cas de test. Les tags sont extrêmement utiles pour organiser les tests, les sélectionner pour une exécution ciblée (par exemple, n'exécuter que les tests `smoke` ou les tests de `regression`), et pour les statistiques dans les rapports.
- `[Setup]` et `[Teardown]` : Similaires à `Test Setup` et `Test Teardown` de la section `*** Settings ***`, mais s'appliquent uniquement au cas de test spécifique où ils sont définis. Ils surchargent les `Test Setup/Teardown` globaux.
- `[Template]` : Permet d'appliquer un keyword template à un cas de test spécifique, en surchargeant un éventuel `Test Template` global. Le nom du cas de test fournit alors les arguments au keyword template.
- `[Timeout]` : Définit un délai maximum d'exécution pour un cas de test spécifique.
La clarté des noms de cas de test et la décomposition logique des étapes en keywords pertinents sont cruciales pour la lisibilité et la maintenabilité de vos suites de tests. Chaque cas de test doit idéalement vérifier une chose spécifique et être aussi indépendant que possible des autres.
La section `*** Keywords ***` : construire vos propres briques logicielles
La section `*** Keywords ***` (parfois aussi appelée `*** User Keywords ***`) est l'endroit où la magie de la réutilisabilité et de l'abstraction de Robot Framework prend tout son sens. C'est ici que vous définissez vos propres keywords, appelés keywords utilisateurs. Un keyword utilisateur est une séquence nommée d'autres keywords (intégrés, de librairie, ou même d'autres keywords utilisateurs) qui accomplit une tâche spécifique.
Créer des keywords utilisateurs présente de nombreux avantages :
- Lisibilité accrue des cas de test : Les cas de test deviennent plus concis et expriment l'intention métier plutôt que les détails techniques de bas niveau. Comparer `Effectuer une recherche de produit pour "Robot Framework" et vérifier les résultats` à une longue suite de clics et de saisies.
- Réutilisabilité du code : Si une séquence d'actions est répétée dans plusieurs cas de test (par exemple, se connecter à une application), vous pouvez la définir une seule fois comme un keyword utilisateur et l'appeler partout où c'est nécessaire.
- Maintenance simplifiée : Si la logique d'une action commune change (par exemple, le processus de connexion est modifié), vous n'avez besoin de mettre à jour que le keyword utilisateur correspondant, et le changement est répercuté dans tous les tests qui l'utilisent.
- Abstraction : Permet de cacher la complexité des interactions de bas niveau derrière des keywords métier plus parlants.
La définition d'un keyword utilisateur est simple : vous donnez un nom au keyword, puis, sur les lignes suivantes et indentées, vous listez les étapes (appels à d'autres keywords) qui le composent. Les keywords utilisateurs peuvent également accepter des arguments et retourner des valeurs, ce qui les rend encore plus puissants et flexibles.
*** Keywords ***
Ouvrir Le Navigateur Et Accéder A La Page De Connexion
[Documentation] Ouvre le navigateur spécifié et navigue vers l'URL de connexion.
Open Browser ${URL_LOGIN} ${BROWSER}
Maximize Browser Window
Page Should Contain Bienvenue sur la page de connexion
Remplir Le Champ Email Avec
[Arguments] ${email_address}
[Documentation] Remplit le champ email avec l'adresse fournie.
Input Text id:email_field ${email_address}
Remplir Le Champ Mot De Passe Avec
[Arguments] ${user_password}
Input Password id:password_field ${user_password}
Cliquer Sur Le Bouton "Se Connecter"
Click Button xpath=//button[text()='Se Connecter']
Vérifier Que L'Utilisateur Est Redirigé Vers Le Tableau De Bord
Location Should Be ${URL_DASHBOARD}
Page Should Contain Element id:user-avatar
Effectuer une recherche de produit pour
[Arguments] ${terme_recherche}
[Return] @{resultats}
Input Text id:search_bar ${terme_recherche}
Click Button id:search_button
Wait Until Page Contains Element css:.search-results timeout=10s
@{elements_resultats} Get WebElements css:.product-item
@{resultats} Create List
FOR ${element} IN @{elements_resultats}
${texte_element} Get Text ${element}
Append To List ${resultats} ${texte_element}
END
RETURN @{resultats}Comme pour les cas de test, les keywords utilisateurs peuvent avoir leur propre `[Documentation]`, `[Arguments]` (pour définir les paramètres d'entrée), `[Return]` (pour spécifier les valeurs retournées), et même un `[Teardown]` (keyword de nettoyage exécuté si le keyword utilisateur échoue).
Bien maîtriser la création et l'utilisation des keywords utilisateurs est fondamental pour écrire des tests Robot Framework qui soient non seulement fonctionnels, mais aussi élégants, maintenables et évolutifs. C'est la clé pour passer de simples scripts à de véritables frameworks de test robustes.