2017-09-27 9 views
0

バックグラウンドのキーワードは、各シナリオを実行する前に共通のステップを実行するために利用できます。同様に、後のフックのようなJavaコードの論理的なステップではなく、各シナリオの後のコモンステップのために「After」キーワードが利用できるようなものがあります。キュウリのステップを実行するためにバックグラウンドのようなAfterキーワードがありますか

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 

答えて

0

短い答えの下に、あなたはおそらくよりこのhereに、Afterフックを使用することができますように私は必要があるが、それはあなたのケースのためにお奨めないです。 BDDは技術以外のステークホルダーとのコミュニケーションに使用されます

シナリオ概要をどのように記述したかでは、これは一度だけ実行され、応答が異なる場合は200という形式で、最後の2つの手順が失敗します最初のThen)。

チェックする必要があるのは、レスポンスが200のハッピーフローだけです。Scenario OutlineExamplesである必要はありません。 1つのシナリオを作成するだけです。

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 

応答コードを追加する予定がある場合は、シナリオのアウトラインを別の方法で書き換えることをお勧めします。確認のためにAfterというキーワード(Thenステップ)は必要ありません。シナリオのアウトラインを使用している場合は、とにかく一度だけ作成しています。

応答コードをさらに追加する場合は、最後の手順を別に管理する必要があります。

| Content-Type | application/json;v=3 |などの詳細を非表示にして、ステップ定義内で管理することもお勧めします。

更新:

私はあなたのコメントから集められた何があなたがそれらを使用するための機能ファイルと、すべてのシナリオ内で一度だけ書かれたもの、最後の4つのステップ(Thenステップ)を持つようにしたいということです。

私が知る限り、Backgroundと同じ確認手順を実行できるAfterはありません.Gherkin言語の前提条件にあります。

これを簡略化する方法はありますが、読みやすさが低下します。たとえば、全く同じ4つのThenステップを使用する10のシナリオと2つのシナリオのアウトラインがある場合は、より一般的なステップですべてを入れ子にすることができます。ステップが異なるステップ定義ファイルから来たら、picocontainerそれらをグループ化して、フィーチャファイル内で何回呼び出すかを減らしてください。詳細here

Thenの手順は、3つのパラメータと5つの検証があるため、1つまたは2つの簡単な手順で作成するのが少し複雑です。

結論としては、それぞれのシナリオ/シナリオの概要で記述する方が良いと思います。他の人がフィーチャーファイルを見て、Thenを見ていないのは難しいでしょう。より良い方法は、シナリオのアウトラインでより多くのシナリオをグループ化しようとすることです。その手順はそれほど繰り返されません。

希望すると助かります!

+0

ありがとうございました。しかし、私が求めている主な理由は、50以上のシナリオがあるということです。すべてのシナリオで手順は多かれ少なかれ、変更可能な手順は私が私の質問で言及した中間の手順だけです。それぞれのシナリオで、私のHTTPコードが変更され、「例:」に入れて検証します。他の人には、期待されるjsonと実際のjsonの内容で検証します。だから、私は何度も何度も繰り返しているようです。そこでいくつかのきれいな定義を探していました。あなたは私を助けてくれますか? – mmar

+0

申し訳ありませんが、あなたがしようとしていることを正確に理解しているとは思いません。私は答えにもう一度行きます。 –

関連する問題