SpecFlow - 用列表重复测试X次?

时间:2012-03-04 22:14:35

标签: specflow

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 |

在上面的场景中,我想:

  • GIVEN - 查询来自数据库的10名成员
  • WHEN + THEN - 执行这些步骤10次,每次记录一次。

这是否可以使用SpecFlow?
如果是这样,你会如何设置它?

TIA

1 个答案:

答案 0 :(得分: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...  |

这将为示例表中的每个id执行一次您的方案。如果需要,您可以将表扩展为包含多个列。

或者,更简单(如果您在上面的每个示例表中只有一行)

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 githubcucumber language syntax for scenario outlines