Как я могу повторить шаги в схеме сценария Specflow

В двух словах, мне нужно создать схему сценария с повторяемым шагом без необходимости вводить его с использованием нескольких AND, как я сейчас делаю ниже:

Scenario Outline: outline
    Given I am a user
    When I enter <x> as an amount
       And I enter <x2> as an amount
    Then the result should be <result>
Scenarios:
    |x|x2|result|
    |1|2 |3     |
    |1|0 |1     |

Однако я хотел бы сделать что-то вроде следующего:

Scenario Outline: outline 
    Given I am a user
    When I enter <Repeat: x> as an amount
    Then the result should be <result>

Scenarios:
    |x    |result|
    |1,2,3|6     |
    |1,2  |3     |

По сути, я хочу, чтобы «Я ввожу как сумму» запускался 3 и 2 раза соответственно.

Ближе всего к этому вопросу я нашел Как мне повторно запустить план сценария огурца с другими параметрами?, но я хотел перепроверить, прежде чем сдаться и использовать StepArgumentTransformation со списком, разделенным запятыми, или что-то подобное.

Окончательный ответ, с которым я пошел, выглядит примерно так:

Scenario Outline: outline 
    Given I am a user
    When I enter the following amounts
        | Amount1 | Amount 2| Amount3|
        | <Amt1>  | <Amt2>  | <Amt3> | 
    Then the result should be <result>

Scenarios:
    |Amt1 |Amt2 |Amt3 |result|
    |1    |2    |3    |6     |

Кажется, нет хорошего способа оставить значение пустым, но это довольно близко к решению, которое я искал.


person Justin Pihony    schedule 30.09.2011    source источник


Ответы (3)


Ключевое слово Examples:

Scenario Outline: outline
    Given I am a user
    When I enter <x> as an amount
    Then the result should be <result>
    Examples:
        |x|result|
        |1|3     |
        |1|1     |

Предназначен для случаев, когда вы хотите, чтобы весь тест принимал разные параметры. Похоже, вы хотите передать повторяющиеся параметры на шаге When.

Более простой подход, не требующий реализации StepArgumentTransformation, заключается в простом использовании таблицы в операторе when:

When I enter the following amounts
|Amount|
|2     |
|3     |
|4     |

Затем просто переберите все строки в таблице, чтобы получить аргументы. Это позволяет избежать необходимости иметь промежуточный метод для преобразования.

Альтернативы включают использование большего количества шагов или синтаксический анализ параметров, поэтому, как вы говорите, используйте StepArgumentTransformation.

Конечно, если вам нужно протестировать несколько повторяющихся элементов, вы можете использовать как StepArgumentTransformation, так и Examples: в списке чисел с запятыми:

Examples:
|x    |result|
|1    |1     |
|1,2,3|6     |
person Adam Houldsworth    schedule 27.10.2011
comment
Я собираюсь попробовать кормить в таблице в когда. Это кажется наиболее близким к тому, что я искал. Спасибо! - person Justin Pihony; 30.12.2011
comment
На самом деле это было правильно лишь отчасти. Я отредактировал свой исходный пост, чтобы отразить то, что я сделал для тех, кто ищет этот ответ в будущем. - person Justin Pihony; 27.01.2012


Это работает для меня и выглядит немного более читаемым:

Scenario: common scenarios goes here one time followed by scenario outline.
   Given I am a user

Scenario Outline: To repeat a set of actions in the same page without logining in everytime.
   When I enter <x> as an amount
   Then the result should be <result>

Examples:
|x|result|
|1|2|
|2|4|
|4|8|
person Ashok M A    schedule 04.11.2016