
Création d'un keyword utilisateur `Se Connecter Avec Identifiants Valides`
Apprenez à créer et utiliser un keyword utilisateur `Se Connecter Avec Identifiants Valides` dans Robot Framework pour optimiser vos tests de connexion et améliorer la réutilisabilité de votre code.
Pourquoi créer un keyword utilisateur pour la connexion ?
Dans l'exercice précédent, nous avons automatisé une connexion utilisateur en écrivant une séquence d'actions directement dans notre cas de test. Bien que fonctionnelle, cette approche peut rapidement devenir répétitive si plusieurs tests nécessitent une connexion. C'est ici qu'intervient le concept de keyword utilisateur, un pilier du principe DRY (Don't Repeat Yourself - Ne vous répétez pas) dans Robot Framework.
Un keyword utilisateur est une séquence de keywords existants (qu'ils soient intégrés, issus de librairies ou d'autres keywords utilisateurs) regroupés sous un nouveau nom que vous définissez. L'objectif est d'encapsuler une logique métier ou une série d'actions récurrentes, comme notre processus de connexion. Créer le keyword `Se Connecter Avec Identifiants Valides` nous permettra de simplifier nos cas de tests, d'améliorer leur lisibilité et de centraliser la logique de connexion, facilitant ainsi sa maintenance.
En transformant les étapes de saisie des identifiants et du clic sur le bouton de connexion en un seul keyword utilisateur, nous rendons non seulement le code plus modulaire, mais aussi plus expressif. Imaginez lire un test qui dit explicitement `Se Connecter Avec Identifiants Valides` plutôt qu'une suite de `Input Text`, `Input Password` et `Click Button`. La compréhension du scénario de test devient immédiate.
Définition et structure du keyword `Se Connecter Avec Identifiants Valides`
La création de keywords utilisateurs se fait dans la section `*** Keywords ***` d'un fichier Robot Framework (fichier de test `.robot` ou fichier de ressource `.resource`). Notre keyword `Se Connecter Avec Identifiants Valides` aura besoin de recevoir le nom d'utilisateur et le mot de passe comme informations variables, nous utiliserons donc des arguments.
Voici comment nous pouvons définir ce keyword. Il prendra deux arguments : le nom d'utilisateur et le mot de passe. A l'intérieur du keyword, nous réutiliserons les keywords `Input Text`, `Input Password` et `Click Button` de SeleniumLibrary, en utilisant les sélecteurs que nous avons identifiés pour les champs et le bouton du site de démonstration The Internet - Heroku App.
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${URL_LOGIN} https://the-internet.herokuapp.com/login
${BROWSER} Chrome
${USERNAME_VALID} tomsmith
${PASSWORD_VALID} SuperSecretPassword!
# Sélecteurs pour les éléments de la page de connexion
${USERNAME_SELECTOR} id:username
${PASSWORD_SELECTOR} id:password
${LOGIN_BUTTON_SELECTOR} css:button[type='submit']
${SUCCESS_MESSAGE_SELECTOR} id:flash
${SUCCESS_TEXT_EXPECTED} You logged into a secure area!
*** Keywords ***
Se Connecter Avec Identifiants Valides
[Documentation] Effectue une connexion en utilisant les identifiants fournis.
... Prend le nom d'utilisateur et le mot de passe en arguments.
[Arguments] ${utilisateur} ${mot_de_passe}
Log To Console Tentative de connexion avec l'utilisateur : ${utilisateur}
Input Text ${USERNAME_SELECTOR} ${utilisateur}
Input Password ${PASSWORD_SELECTOR} ${mot_de_passe}
Click Button ${LOGIN_BUTTON_SELECTOR}
Ouvrir Et Preparer Navigateur Pour Connexion
[Documentation] Ouvre le navigateur sur la page de login et maximise la fenêtre.
Open Browser ${URL_LOGIN} ${BROWSER}
Maximize Browser Window
Verifier Connexion Reussie
[Documentation] Attend et vérifie le message de succès après connexion.
Wait Until Page Contains Element ${SUCCESS_MESSAGE_SELECTOR} timeout=10s
Element Should Contain ${SUCCESS_MESSAGE_SELECTOR} ${SUCCESS_TEXT_EXPECTED}Dans cette définition :
- `[Documentation]` permet de décrire l'objectif du keyword et son utilisation. C'est une bonne pratique.
- `[Arguments] ${utilisateur} ${mot_de_passe}` déclare que notre keyword attend deux valeurs en entrée. Ces valeurs seront accessibles via les variables `${utilisateur}` et `${mot_de_passe}` à l'intérieur du keyword.
- Les keywords `Input Text`, `Input Password`, et `Click Button` utilisent les sélecteurs définis dans la section `*** Variables ***` et les arguments passés au keyword.
- `Log To Console` est utilisé pour afficher un message informatif lors de l'exécution, utile pour le débogage.
Notez que nous avons également créé d'autres keywords utilisateurs (`Ouvrir Et Preparer Navigateur Pour Connexion`, `Verifier Connexion Reussie`) pour structurer davantage le code et améliorer la lisibilité, en utilisant les variables de sélecteurs et de texte attendu définies globalement.
Utilisation du keyword utilisateur dans un cas de test
Maintenant que notre keyword `Se Connecter Avec Identifiants Valides` est défini, nous pouvons l'utiliser dans nos cas de test. L'appel se fait simplement en utilisant le nom du keyword, suivi des valeurs pour les arguments qu'il attend. Reprenons notre scénario de connexion réussie :
*** Test Cases ***
Connexion Reussie En Utilisant Un Keyword Utilisateur
[Documentation] Teste la connexion réussie via le keyword utilisateur.
Ouvrir Et Preparer Navigateur Pour Connexion
Se Connecter Avec Identifiants Valides ${USERNAME_VALID} ${PASSWORD_VALID}
Verifier Connexion Reussie
[Teardown] Close BrowserComparez ce cas de test à une version où toutes les étapes seraient listées individuellement. La version utilisant le keyword utilisateur est significativement plus courte, plus claire et exprime l'intention du test de manière plus directe. On comprend immédiatement que le test ouvre le navigateur, tente une connexion avec des identifiants valides, puis vérifie le succès.
Les avantages sont multiples :
- Lisibilité : Le cas de test se lit presque comme une phrase en langage naturel.
- Maintenance : Si la manière de se connecter change (par exemple, un sélecteur est modifié), il suffit de mettre à jour la définition du keyword `Se Connecter Avec Identifiants Valides` une seule fois. Tous les tests utilisant ce keyword bénéficieront automatiquement de la modification.
- Réutilisabilité : Ce keyword peut être appelé depuis n'importe quel autre cas de test nécessitant une connexion avec des identifiants valides, sans avoir à réécrire les étapes.
En passant les variables `${USERNAME_VALID}` et `${PASSWORD_VALID}` (définies dans la section `*** Variables ***`) comme arguments, nous fournissons les données spécifiques pour cette instance de connexion. On pourrait aussi passer des valeurs directement, par exemple : `Se Connecter Avec Identifiants Valides un_autre_user un_autre_pass`.
Bonnes pratiques et pistes d'amélioration pour votre keyword
La création de ce premier keyword utilisateur est une étape importante. Pour aller plus loin et rendre vos keywords encore plus robustes et professionnels, voici quelques pistes :
- Gestion des erreurs : Actuellement, si la connexion échoue (par exemple, à cause d'identifiants incorrects), les keywords `Wait Until Page Contains Element` ou `Element Should Contain` dans `Verifier Connexion Reussie` échoueront. Vous pourriez envisager d'ajouter des vérifications intermédiaires ou des options de gestion d'erreur plus fines directement dans vos keywords.
- Fichiers de ressources : Pour des projets plus conséquents, il est courant de placer les keywords utilisateurs génériques (comme celui de connexion) dans des fichiers de ressources dédiés (`.resource`). Ces fichiers peuvent ensuite être importés dans vos suites de tests, favorisant une meilleure organisation et un partage aisé des keywords entre plusieurs suites.
- Nommage explicite : Le nom `Se Connecter Avec Identifiants Valides` est déjà assez clair. Continuez à nommer vos keywords de manière à ce que leur fonction soit évidente sans avoir à lire leur code interne.
- Paramétrisation avancée : Pour des besoins plus complexes, un keyword utilisateur peut prendre plus d'arguments, par exemple l'URL de la page de connexion si elle varie, ou les sélecteurs des éléments s'ils ne sont pas constants.
L'ajout de `[Documentation]` à vos keywords est une pratique fortement recommandée. Elle améliore non seulement la compréhension de votre code par d'autres (ou par vous-même plus tard), mais elle est également utilisée par `Libdoc`, l'outil de génération de documentation de Robot Framework, pour créer des documentations de librairies et de keywords.
En maîtrisant la création et l'utilisation des keywords utilisateurs, vous décuplez la puissance de Robot Framework et posez les bases d'une automatisation de tests efficace, maintenable et évolutive. C'est une compétence clé pour tout automaticien de tests travaillant avec cet outil.