
Renforcement : assertions, keywords de librairie et keywords utilisateurs
Approfondissez votre maîtrise de Robot Framework en renforçant votre compréhension des assertions, l'utilisation des keywords de librairie et la création de keywords utilisateurs efficaces.
L'art des assertions : la clé de tests significatifs
Au coeur de tout test automatisé se trouve l'assertion : l'étape où vous vérifiez si le comportement réel de l'application correspond au comportement attendu. Sans assertions, un script d'automatisation ne fait qu'exécuter des actions sans jamais confirmer si elles ont abouti au résultat souhaité. Dans Robot Framework, les assertions sont généralement implémentées à l'aide de keywords spécifiques, souvent préfixés par `Should...` ou `...Should Be...`.
Il est crucial de choisir des assertions précises et pertinentes. Par exemple, après une connexion, vérifier simplement que la page contient le mot "Welcome" (`Page Should Contain Welcome`) est moins robuste que de vérifier qu'un élément spécifique, comme un `div` avec l'ID `user_greeting`, contient le texte exact "Welcome, John Doe!" (`Element Text Should Be id:user_greeting Welcome, John Doe!`). La seconde assertion est plus ciblée et moins susceptible de donner un faux positif.
SeleniumLibrary, la librairie standard pour les tests web avec Robot Framework, offre une vaste gamme de keywords d'assertion :
- Pour le contenu textuel : `Page Should Contain`, `Page Should Not Contain`, `Element Should Contain`, `Element Should Not Contain`, `Element Text Should Be`, `Element Text Should Not Be`.
- Pour la présence/visibilité d'éléments : `Page Should Contain Element`, `Page Should Not Contain Element`, `Element Should Be Visible`, `Element Should Not Be Visible`.
- Pour les attributs d'éléments : `Element Attribute Value Should Be`.
- Pour l'état des éléments interactifs : `Checkbox Should Be Selected`, `Checkbox Should Not Be Selected`, `Element Should Be Enabled`, `Element Should Be Disabled`, `List Should Have No Selections`, `List Selection Should Be`.
- Pour la navigation et la page : `Location Should Be` (vérifier l'URL), `Title Should Be`.
Le choix judicieux du keyword d'assertion et la précision de ce que vous vérifiez sont fondamentaux pour la fiabilité de vos tests.
Exploiter la puissance des keywords de librairie
Robot Framework tire une grande partie de sa puissance et de sa flexibilité des librairies. Une librairie est un ensemble de keywords prédéfinis qui fournissent des fonctionnalités spécifiques. `SeleniumLibrary` est l'exemple le plus courant pour les tests d'interface utilisateur web, mais il existe de nombreuses autres librairies pour divers besoins : tests d'API (`RequestsLibrary`), opérations sur le système d'exploitation (`OperatingSystem`), manipulation de dates et heures (`DateTime`), etc.
Pour utiliser efficacement les keywords d'une librairie, il est essentiel de :
- Importer la librairie : Dans la section `*** Settings ***` de votre fichier Robot Framework, utilisez le keyword `Library` suivi du nom de la librairie. Exemple : `Library SeleniumLibrary`.
- Connaître les keywords disponibles : La documentation de chaque librairie est votre meilleure amie. Elle liste tous les keywords, leurs arguments, ce qu'ils font, et souvent des exemples d'utilisation. L'outil `libdoc` de Robot Framework (`python -m robot.libdoc SeleniumLibrary documentation.html`) peut générer cette documentation au format HTML.
- Comprendre les arguments des keywords : Chaque keyword peut accepter des arguments positionnels ou nommés. Il est crucial de fournir les bons arguments dans le bon ordre ou avec les bons noms pour que le keyword fonctionne comme prévu. Par exemple, `Open Browser ${URL} ${BROWSER}`.
- Gérer les retours des keywords : Certains keywords retournent des valeurs qui peuvent être stockées dans des variables pour une utilisation ultérieure. Par exemple, `${text}= Get Text id:my_element` stocke le texte de l'élément dans la variable `${text}`.
Bien maîtriser les keywords des librairies que vous utilisez régulièrement vous permet d'écrire des tests plus rapidement et plus efficacement, en tirant parti de fonctionnalités éprouvées et maintenues par la communauté ou par les développeurs de ces librairies. Avant de chercher à réinventer la roue en créant un keyword utilisateur complexe, vérifiez toujours si un keyword de librairie existant ne répond pas déjà à votre besoin.
La stratégie des keywords utilisateurs : abstraction et réutilisabilité
Les keywords utilisateurs sont votre outil pour créer des abstractions de plus haut niveau, adaptées à la logique métier de votre application. Ils permettent de regrouper une séquence de keywords (de librairie ou d'autres keywords utilisateurs) sous un nom unique et significatif. Cette pratique est essentielle pour appliquer le principe DRY (Don't Repeat Yourself) et améliorer la lisibilité ainsi que la maintenabilité de vos suites de tests.
Quand créer un keyword utilisateur ?
- Lorsqu'une séquence d'actions est répétée dans plusieurs cas de tests (par exemple, se connecter, ajouter un produit au panier, naviguer vers une section spécifique).
- Pour simplifier des opérations complexes en les masquant derrière une interface plus simple et plus expressive.
- Pour améliorer la lisibilité des cas de tests en utilisant des termes proches du langage métier de l'application.
Un bon keyword utilisateur est :
- Bien nommé : Son nom doit clairement indiquer ce qu'il fait. Par exemple, `Se Connecter En Tant Qu Administrateur` est plus clair qu'une suite de `Input Text` et `Click Button`.
- Paramétrable : Utilisez des arguments (`[Arguments]`) pour rendre vos keywords utilisateurs flexibles et capables de gérer différentes données d'entrée. Par exemple, `Se Connecter Avec Identifiants ${username} ${password}`.
- Documenté : Utilisez `[Documentation]` pour expliquer son rôle, ses arguments, et tout comportement important.
- Focalisé : Un keyword utilisateur devrait idéalement avoir une seule responsabilité claire.
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${LOGIN_URL} http://example.com/login
${USERNAME_FIELD} id:username
${PASSWORD_FIELD} id:password
${SUBMIT_BUTTON} id:login-button
*** Keywords ***
Effectuer Une Connexion Utilisateur
[Documentation] Ouvre la page de connexion, saisit les identifiants et soumet.
[Arguments] ${user} ${pass}
Open Browser ${LOGIN_URL} chrome
Maximize Browser Window
Input Text ${USERNAME_FIELD} ${user}
Input Password ${PASSWORD_FIELD} ${pass}
Click Button ${SUBMIT_BUTTON}
# Une assertion pourrait être ici ou laissée au cas de test appelant
*** Test Cases ***
Test De Connexion Valide
Effectuer Une Connexion Utilisateur testuser testpass
Page Should Contain Welcome, testuser!
[Teardown] Close BrowserDans cet exemple, `Effectuer Une Connexion Utilisateur` abstrait toute la complexité de l'ouverture du navigateur et de la saisie des identifiants. Le cas de test devient beaucoup plus lisible.
En combinant judicieusement des assertions précises, une bonne connaissance des keywords de librairie disponibles, et la création stratégique de keywords utilisateurs, vous pouvez construire des suites de tests automatisés avec Robot Framework qui sont à la fois puissantes, robustes, lisibles et faciles à maintenir. C'est cet équilibre qui mène à une automatisation de tests réussie et pérenne.