うまくいけば、他の人が理解できるように自分の問題を十分に明確に説明できます。ここで、次の2つの仮想シナリオがあると想像してください。
Scenario: Filter sweets by king size and nut content
Given I am on the "Sweet/List" Page
When I filter sweets by
| Field | Value |
| Filter.KingSize | True |
| Filter.ContainsNuts | False |
Then I should see :
| Value |
| Yorkie King Size |
| Mars King Size |
Scenario: Filter sweets by make
Given I am on the "Sweet/List" Page
When I filter sweets by
| Field | Value |
| Filter.Make | Haribo |
Then I should see :
| Value |
| Starmix |
これらのシナリオは、関連するコンパイル済みテストステップを変更せずに、フィールド/値およびThenValueエントリのWhen行を好きなだけ追加できるので便利です。ただし、さまざまなフィルターテストのコピー/貼り付けのシナリオは繰り返しになり、多くのコードを使用することになります。これは避けたいことです。理想的には、シナリオのアウトラインを作成し、上記のテストでの動的な性質を維持したいと思いますが、それを実行しようとすると、サンプルテーブルの定義で問題が発生し、適切と思われる新しい行を追加できません。新しいテストインスタンス、現在私はこれを持っています:
Scenario Outline: Filter Sweets
Given I am on the <page> Page
When I filter chocolates by
| Field | Value |
| <filter> | <value> |
Then I should see :
| Output |
| <output> |
Examples:
| page | filter | value | output |
| Sweet/List | Filter.Make | Haribo | Starmix |
したがって、シナリオのアウトラインを使用すると、フィルターと期待されるデータに行を動的に追加できるという問題があります。これを回避する方法を知っている人はいますか?別の角度からこれにアプローチする必要がありますか?
回避策は次のようになります。
Then I should see :
| Output |
| <x> |
| <y> |
| <z> |
Examples:
| x | y | z |
しかし、それはあまり動的ではありません....より良い解決策を望んでいますか?:)