Est-il correct d'avoir plusieurs groupes de Given / When / Then dans un seul scénario
Je suis en train d'écrire des tests d'acceptation Cornichon où je veux tester pour de multiples changements dans l'INTERFACE utilisateur d'une application web basée sur une action initiale. Voici un exemple:
Scenario: Cancel editing a new text asset
Given the user "[email protected]" is logged in
When the user navigates to "/build/"
And the user clicks the "Sandbox" link
And the user inputs "Test story for canceling editing of a new text asset" for the "title" field
And the user inputs "Test User" for the "byline" field
And the user inputs "My summary, so exciting!" for the "summary" textarea
And the user clicks on "Untitled Section" in the section list
And the user clicks the "Text" icon in the "center" container
And the user inputs the following text in the rich text editor:
"""
Test text for asset. This is cool.
"""
And the user clicks the "cancel" button
Then the following text is not present:
"""
Test text for asset. This is cool.
"""
And the "Image" icon is present
And the "Text" icon is present
When the user refreshes the browser
And the user clicks on "Untitled Section" in the section list
Then the following text is not present:
"""
Test text for asset. This is cool.
"""
When the user opens the asset drawer
Then the following text is not present:
"""
Test text for asset. This is cool.
"""
Noter qu'il existe plusieurs groupes de Quand/Puis, pour tester les réponses de l'action initiale. Alors que la plupart des implémentations de pas ignorer le préfixe du mot-clé, et je suis assez sûr que je peux obtenir ce test à exécuter, est-il un meilleur moyen de tester les différents résultats? Est-il préférable d'écrire plusieurs scénarios avec la même configuration, mais différents ", Puis les" déclarations?
source d'informationauteur Geoffrey Hing
Vous devez vous connecter pour publier un commentaire.
N'oubliez pas que vous devez tester UN seul comportement/fonctionnalité à la fois.
La règle de base est que vous devez utiliser un seul Lors de l'étape:
Vous voir seule ligne de Quand, sans aucune Padn sous Lors de. Si vous utilisez de nombreuses fois que les étapes au lieu de cela, vous créez des scripts de test, pas une spécification. Vos tests seront difficile à comprendre, et vous remarquerez que vous ajoutez de plus en plus de mesures, lorsque le sous-jacent de la mise en œuvre des changements.
Vous avez également besoin de garder une logique sous-jacente caché, parce que vous ne voulez pas le changer chaque fois que vous modifiez quelque chose hors de propos. Exemple:
Que si vous modifiez le champ de résumé à partir d'un textarea pour un type d'entrée? Vous avez à changer le scénario de l'entretien (cauchemar) ou vers la gauche vous de scénario couché (pire que de ne pas avoir de scénario). Vous devriez écrire à la place:
Mais encore, la structure de l'ensemble du scénario est mauvais. Posez-vous la question: ce que je veux vérifier? Si j'étais une personne qui veut comprendre la logique métier de la fonction, je voudrais voir quelque chose comme:
Que c'est!
Comment faire? Déplacer toutes pertinence logique plus profonde, utilisez le PageObject modèle etc. Et de lire sur La Spécification Par L'Exemple