Utilisation de Template pour les tests pilotés par données avec Robot Framework - Exemple d'interface de connexion

Dans Robot Framework, la fonctionnalité Template (modèle de test) est très utile car elle permet de transformer un cas de test basé sur des mots-clés en un style de test piloté par des données. Cela signifie que vous pouvez exécuter la même logique de test avec plusieurs ensembles d'entrées différentes.

Comprendre le modèle de test

En résumé :

  • Test piloté par mots-clés : Le cas de test se compose d'une série de mots-clés et de leurs paramètres.
  • Test piloté par données (via Template) : Le corps du cas de test n'est plus composé de séquences de mots-clés spécifiques, mais plutôt d'un ensemble de données de test. Vous devez définir un mot-clé modèle, qui définit la logique de test à répéter, et chaque ligne de données dans le cas de test est transmise en tant que paramètre à ce mot-clé modèle.

Un seul [Template] peut être utilisé dans un cas de test, et vous ne pouvez pas mélanger des mots-clés avec [Template] et des mots-clés ordinaires dans le même cas de test.

Comment configurer un modèle de test

Il existe deux façons principales de cnofigurer un modèle de test :

  1. Pour un seul cas de test : Utiliser [Template] à l'intérieur du cas de test.
  2. Pour tous les cas de test : Utiliser Test Template dans la section Settings du fichier de test. Si un cas de test définit individuellement [Template], cela écrase le Test Template défini au niveau du fichier.

Utilisation détaillée des modèles de test

Examinons quelques scénarios courants pour comprendre comment utiliser les modèles.

1. Utilisation de base

C'est la méthode la plus directe : vous avez un mot-clé qui accepte des paramètres, puis vous utilisez le modèle pour appeler ce mot-clé avec plusieurs ensembles de données.

*** Cas de Tests ***
Cas de test normal
    Exemple de mot-clé    premier argument    deuxième argument

Cas de test utilisant un modèle
    [Template]    Exemple de mot-clé
    premier argument    deuxième argument
    troisième argument    quatrième argument
    cinquième argument    sixième argument

*** Mots-clés ***
Exemple de mot-clé
    [Arguments]    ${arg1}    ${arg2}
    Log    Argument 1: ${arg1}, Argument 2: ${arg2}

Dans cet exemple, "Cas de test utilisant un modèle" exécute trois fois le mot-clé "Exemple de mot-clé".

Version de test Web (utilisant SeleniumLibrary)

*** Paramètres ***
Bibliothèque    SeleniumLibrary
Bibliothèque    Collections

*** Variables ***
${NAVIGATEUR}          chrome
${URL_CONNEXION}        http://localhost:8080/login
${RETARD}            0.5

*** Cas de Tests ***
Test de fonction de connexion Web piloté par données
    [Template]    Modèle de test de connexion Web
    [Configuration]    Ouvrir navigateur vers page de connexion
    [Nettoyage]    Fermer navigateur
    
    # Nom d'utilisateur          Mot de passe              Résultat attendu   Élément attendu
    utilisateur_test        mot_de_passe_correct      succès     id:message_bienvenue
    mauvais_utilisateur      mauvais_mot_de_passe        échec        id:message_erreur
    ${VIDE}        certains_mots_de_passe          échec        id:erreur_nom_utilisateur
    utilisateur_test        ${VIDE}          échec        id:erreur_mot_de_passe

*** Mots-clés ***
Ouvrir navigateur vers page de connexion
    Ouvrir Navigateur    ${URL_CONNEXION}    ${NAVIGATEUR}
    Définir Taille Fenêtre    1200    800
    Définir Vitesse Selenium    ${RETARD}

Fermer navigateur
    Fermer Navigateur

Modèle de test de connexion Web
    [Arguments]    ${nom_utilisateur}    ${mot_de_passe}    ${resultat_attendu}    ${élément_attendu}
    
    # Effacer et saisir nom d'utilisateur
    Exécuter Mot-clé Si    '${nom_utilisateur}' != '${VIDE}'    Saisir Texte    id:nom_utilisateur    ${nom_utilisateur}
    
    # Effacer et saisir mot de passe
    Exécuter Mot-clé Si    '${mot_de_passe}' != '${VIDE}'    Saisir Texte    id:mot_de_passe    ${mot_de_passe}
    
    # Cliquer sur bouton de connexion
    Cliquer Bouton    id:bouton_connexion
    
    # Valider selon résultat attendu
    Exécuter Mot-clé Si    '${resultat_attendu}' == 'succès'    Valider Connexion Réussie    ${élément_attendu}
    ...    SINON    Valider Connexion Échouée    ${élément_attendu}
    
    # Retourner à la page de connexion si nécessaire
    Exécuter Mot-clé Et Ignorer Erreur    Aller À    ${URL_CONNEXION}

Valider Connexion Réussie
    [Arguments]    ${élément_attendu}
    Attendre Jusqu'à Ce Que L'Élément Soit Visible    ${élément_attendu}    5s
    Log    Validation de connexion réussie passée

Valider Connexion Échouée
    [Arguments]    ${élément_attendu}
    Attendre Jusqu'à Ce Que L'Élément Soit Visible    ${élément_attendu}    5s
    Log    Validation de connexion échouée passée

Exemple de rapport de test

Après l'exécution des tests ci-dessus, vous obtiendrez un rapport similaire à celui-ci :

Cas de test: Les identifiants de connexion valides devraient réussir
├── Tester fonction de connexion (utilisateur_test, mot_de_passe_correct, succès, message_bienvenue) ✓ PASS
├── Tester fonction de connexion (admin, admin123, succès, bienvenue) ✓ PASS  
└── Tester fonction de connexion (user@test.com, Pass123!, succès, tableau_de_bord) ✓ PASS

Cas de test: Les identifiants de connexion invalides devraient échouer
├── Tester fonction de connexion (utilisateur_invalide, mauvais_mot_de_passe, échec, nom d'utilisateur ou mot de passe incorrect) ✓ PASS
├── Tester fonction de connexion (, mot_de_passe_correct, échec, nom d'utilisateur ne peut être vide) ✓ PASS
├── Tester fonction de connexion (utilisateur_test, , échec, mot de passe ne peut être vide) ✓ PASS
└── Tester fonction de connexion (, , échec, veuillez entrer un nom d'utilisateur et un mot de passe) ✓ PASS

Étiquettes: RobotFramework SeleniumLibrary tests-pilotes-par-donnees

Publié le 6 août à 11h38