2017-09-27 5 views
0

Je sais que le mot-clé Background est disponible pour exécuter une procédure courante avant d'exécuter chaque scénario. De même, il ya quelque chose comme "Après" mot-clé est disponible pour les étapes communes après chaque scénario, pas les étapes logiques dans le code java comme après les hameçons, je veux dire dans les étapes de cornichon lui-même. j'ai besoin comme ci-dessousY at-il un mot clé After disponible comme Background pour exécuter des étapes concombre

Background 
Given I use the API header information 
    | Content-Type | application/json;v=3 | 
And I connect to postgresql 

Scenario Outline: 
    And I get the "Request" payload from "5NB_CARD-A_Request" file for the scenario "CardA_Scenario1" 
    And I store the input payload individual field details for database validation 
    And I form a client with this resource url "/transaction" 
    When I make a POST call and capture the response 
    And I get the "response" payload from "5NB_CARD-A_Response" file for the scenario "CardA_Scenario1" 


Examples: 
| HTTPCode | 
| 200  | 

After 
Then I validate the output response with expected data 
And I verify the HTTP error code is "<HTTPCode>" 
And I fetch and validate latest created data from "transaction" table 
And I validate the created card is inserted into "field" table 

Répondre

0

Réponse courte, vous pouvez probablement utiliser un crochet After, plus sur ce here, mais il est pas pour votre cas recommandé. BDD est utilisé pour communiquer avec des intervenants non techniques

De la façon dont vous avez écrit l'aperçu du scénario, il semble que cela ne fonctionne qu'une seule fois et si la réponse si différente forme 200, alors les 2 dernières étapes échoueront (ou même le premier Then).

Si la seule chose que vous devez vérifier est le flux heureux, dans lequel la réponse est 200, il n'y a pas besoin de Scenario Outline avec Examples. Créez simplement un scénario.

Background 
Given I use the API header information 
    | Content-Type | application/json;v=3 | 
And I connect to postgresql 

Scenario: Happy flow 
    And I get the "Request" payload from "5NB_CARD-A_Request" file for the scenario "CardA_Scenario1" 
    And I store the input payload individual field details for database validation 
    And I form a client with this resource url "/transaction" 
    When I make a POST call and capture the response 
    And I get the "response" payload from "5NB_CARD-A_Response" file for the scenario "CardA_Scenario1" 
    Then I validate the output response with expected data 
    And I verify the HTTP error code is "200" 
    And I fetch and validate latest created data from "transaction" table 
    And I validate the created card is inserted into "field" table 

Si vous prévoyez d'ajouter des codes de réponse alors il pourrait être une bonne idée de réécrire les grandes lignes du scénario d'une manière différente. Il n'y a pas besoin de mot-clé After pour votre vérification (Then étapes). Vous ne les écrivez qu'une seule fois quand vous utilisez le contour du scénario. Gardez à l'esprit que vous devrez gérer les dernières étapes différemment si vous ajoutez d'autres codes de réponse.

Il peut également être judicieux de masquer des détails tels que | Content-Type | application/json;v=3 | et de les gérer dans la définition d'étape.

Mise à jour:

Ce que je colligés commentaire est que vous voulez avoir ces 4 dernières étapes (étapes) Then écrites qu'une seule fois dans un fichier de caractéristiques et tous les scénarios de les utiliser. Pour autant que je sache, il n'y a pas After qui peut exécuter les étapes de vérification comme Background pour les conditions préalables, dans le langage Gherkin.

Il existe un moyen de simplifier cela, mais cela réduit la ré-aptitude. Par exemple, si vous avez 10 scénarios et 2 scénarios qui utilisent exactement les mêmes quatre étapes, vous pouvez essayer de les imbriquer tous de façon plus générale et si les étapes proviennent de différents fichiers de définition d'étape, vous pouvez utiliser picocontainer pour groupez-les et réduisez le nombre de fois que vous les appelez dans le fichier de caractéristiques. Plus de détails here.

Le problème est que vos étapes Then sont un peu compliquées à écrire en une ou même deux étapes plus simples, car vous avez 3 paramètres et 5 vérifications. Pour conclure, je pense qu'il est préférable de les écrire pour chaque scénario/scénario. Je serais difficile pour une autre personne de regarder le fichier de fonctionnalité et ne pas voir Then, seulement pour les trouver au fond. Une meilleure façon serait d'essayer de regrouper plus de scénarios dans les scénarios, de sorte que les étapes ne se répètent pas beaucoup.

J'espère que ça aide!

+0

Merci. Mais la raison principale que j'ai demandé est, j'ai plus de 50 scénarios. Pour tous les scénarios, les étapes sont plus ou moins les mêmes, seules les étapes modifiables sont celles du milieu que j'ai mentionnées dans ma question. Pour chaque scénario mon code HTTP va changer et je vais le valider en le plaçant dans 'Exemples:'. Pour les autres, je valide avec les contenus json et json attendus. Donc, il semble que je répète la plupart des étapes encore et encore. Donc, cherchait des définitions propres. Pouvez-vous m'aider à ce sujet? – mmar

+0

Désolé, je ne pense pas que je comprends exactement ce que vous essayez de faire. Je vais donner un autre coup dans la réponse. –