2012-03-04 4 views
4
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 | 

В приведенном выше сценарии я хотел бы:SpecFlow - Повторить тест X раз со списком?

  • ДАЛИ - Поиск 10 членов из БД
  • КОГДА + ТО - Выполните эти действия 10 раз, один раз для каждой записи.

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

ТИА

ответ

6

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

Что вы хотите сценарий наброски, например, так:

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 on github и cucumber language syntax for scenario outlines

+0

Спасибо. Я наконец нашел этот маленький самородок, и это УДИВИТЕЛЬНО! –

+0

Кроме того, мы используем таблицы, чтобы сделать вход более изменчивым. У нас есть, вероятно, 100 тестов в этой общей форме, а некоторые принимают многострочные входы (в таблице), а другие - в одну строку. Опять же - спасибо! –