高度なGherkinテクニック
Eggplant Functionalでは、機能を定義するために必要な基本的なGherkinキーワードに加えて、Gherkinテストをより完全に制御するためのいくつかの追加キーワードを利用できます。これらの高度なGherkinトピックには、以下のものが含まれており、それぞれ詳細に説明されています。
Eggplant FunctionalでGherkin機能を作成する基本情報については、「Gherkinでテストを作成する」を参照してください。
背景
背景要素を使用して、機能内のすべてのシナリオで一貫したGivenステップを定義することができます。背景は機能の最初のシナリオの前に配置され、任意の数のGivenステートメントを含めることができます。また、Givenの代わりにAndやButキーワードのエイリアスを使用することもできます。
背景定義の例は以下のようになります:
Background: app in focus
Given that the Calculator app is running
And that the app is in focus
背景要素を含む機能を実行すると、背景で概説されたGivenステップは、各シナリオが実行されるたびに実行されるため、各シナリオ内にステップを含める必要はありません。
シナリオの概要
同じアクションを変数値で複数回実行したいテストケースがある場合、ハードコーディングされた値で標準シナリオを繰り返す代わりに、シナリオの概要を使用することができます。シナリオアウトライン要素では、ステップ内の値をパラメータ化でき、それに続くExamplesというセクションのデータテーブルから値を読み取md
シナリオの概要内で含めるステップは、機能の定義で概説されている通常のシナリオと同じです。Given、When、Then(必要に応じてAnd/Butのエイリアスを含む)。変数は、<var1>
という形式で角括弧で囲んだ文字列です。任意のステップで変数を含めることができます。
機能内のシナリオの概要は、次のようになります。
Scenario Outline: Calculatorアプリでの乗算機能をチェック
Given Calculatorアプリが実行されていてフォーカスされている
And 計算機に現在の値がない
When 計算機アプリで<Number1>を<Number2>で乗算する
Then アプリは正しい<Answer>を表示する
変数を含む各ステップについて、関連するSenseTalkハンドラーには、データテーブルから変数値を受け取るためのparams
ステートメントが必要です。ステップに複数の変数が含まれている場合(上記のWhenステートメントのよう に)、params
ステートメントにはそれぞれの変数名が必要です。
例:
to handle I_multiply_VAR_by_VAR_in_the_calculator_app
params Number1, Number2
シナリオの概要の直後に、Examplesセクションを追加します。これは、変数に代入する値を含むデータテーブルです。データテーブルの最初の行はヘッダ行です。ヘッダ行の各項目は、変数の名前と完全に一致しなければなりません。ヘッダに続く行にはデータが入ります。行内の項目は、縦棒またはパイプ文字(|)で区切ります。
前のシナリオアウトラインの例のセクションは、次のようになるかもしれません。
Examples:
| Number1 | Number2 | Answer |
| 5 | 9 | 45 |
| 5 | 10 | 50 |
| 5 | 11 | 55 |
| 5 | 12 | 60 |
この形式に従って、必要なだけの列と行を持つデータテーブルを作成できます。
シナリオアウトラインを実行すると、データテーブルが反復処理されます。つまり、テーブル内のデータの各行に対して、変数データを含むかどうかに関係なく、すべてのステップが1回実行されます。たとえば、データの行が10行ある場合(ヘッダーの後)、シナリオアウトラインは10回完全に実 行されます。
ステップのデータテーブル
ステップ定義内の特定の変数を割り当てずに、テーブルから個々のステップにデータを渡したい場合があります。そのような場合は、ステップに直接データテーブルを追加して、関連するハンドラが呼び出されたときにテーブルからすべてのデータが渡されるようにできます。
データテーブルの形式は、Examplesセクションの場合と同じで、Examplesのタイトルを省略します。ステップテキスト内で変数は使用しませんが、データテーブルにはヘッダー行が含まれます。
When I enter text in the page search field
| searchterm |
| Yellowstone |
| Grand Canyon |
| Disneyland |
| Acadia |