SpecFlow / Cucumber / Gherkin - Использование таблиц в схеме сценария

Надеюсь, я смогу объяснить свою проблему достаточно ясно, чтобы другие могли понять, поехали, представьте, что у меня есть два следующих гипотетических сценария:

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 |

Эти сценарии полезны, потому что я могу добавить столько строк, сколько строк поля / Value и Then Value, как мне нравится, без изменения связанных шагов скомпилированного теста. Однако сценарии копирования / вставки для различных тестов фильтров станут повторяющимися и займут много кода - чего я бы хотел избежать. В идеале я хотел бы создать схему сценария и сохранить динамический характер, который у меня есть с тестами выше, однако, когда я пытаюсь это сделать, я сталкиваюсь с проблемой определения таблицы примеров, я не могу добавлять новые строки по своему усмотрению, потому что это было бы новый тестовый экземпляр, сейчас у меня это:

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 |

Но это не очень динамично .... надеетесь на лучшее решение? :)

17
задан Sam Holder 14 November 2014 в 12:13
поделиться