SpecFlow - повторить тест X раз со списком?

Scenario: Change a member to ABC 60 days before anniversary date
    Given Repeat When+Then for each of the following IDs:
    | ID         |
    | 0047619101 |
    | 0080762602 |
    | 0186741901 |
    | 0311285102 |
    | 0570130101 |
    | 0725968201 |
    | 0780265749 |
    | 0780265750 |
    | 0780951340 |
    | 0780962551 |
#-----------------------------------------------------------------------
    When these events occur:
    | WorkflowEventType   | WorkflowEntryPoint |
    | ABC                 | Status Change      | 
    Then these commands are executed:
    | command name      |
    | TerminateWorkflow |
    And For Member, the following documents were queued:
    | Name       |
    | ABC Packet |

В приведенном выше сценарии я хотел бы:

  • ДАННЫЕ – поиск 10 участников в базе данных
  • WHEN + THEN: выполните эти действия 10 раз, по одному разу для каждой записи.

Возможно ли это с помощью SpecFlow?
Если да, то как бы вы его настроили?

ТИА


person Keith Barrows    schedule 04.03.2012    source источник


Ответы (1)


На самом деле это довольно легко сделать, хотя в документации нужно немного поискать.

Вам нужен набросок сценария, например:

Scenario Outline: Change a member to ABC 60 days before anniversary date
Given I have <memberId>
When these events occur:
    | WorkflowEventType   | WorkflowEntryPoint |
    | ABC                 | Status Change      | 
Then these commands are executed:
    | command name      |
    | TerminateWorkflow |
And For <memberId>, the following documents were queued:
    | Name       |
    | ABC Packet |

Examples: 
    | memberId   |
    | 0047619101 |
    | 0080762602 |
    | 0186741901 |
    | ...etc...  |

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

Или, проще говоря (если у вас действительно есть только одна строка в каждой из приведенных выше таблиц примеров)

Scenario Outline: Change a member to ABC 60 days before anniversary date
Given I have <memberId>
When A 'ABC' Event Occurs with EntryPoint 'Status Change'
Then a TerminateWorkflow command is executed
And For <memberId>, the 'ABC Packet' document was queued

Examples: 
    | memberId   |
    | ...etc...  |

Для получения дополнительной информации см. specflow-wiki на github и синтаксис языка огурца для описания сценариев

person perfectionist    schedule 05.03.2012
comment
Спасибо. Наконец-то я нашла этот маленький самородок, и это УДИВИТЕЛЬНО! - person Keith Barrows; 05.03.2012
comment
Кроме того, мы используем таблицы, чтобы сделать ввод более изменчивым. У нас есть около 100 тестов в этой общей форме, и некоторые из них принимают многострочные входные данные (в таблице), а другие - однострочные. Еще раз - спасибо! - person Keith Barrows; 05.03.2012