Specflow功能级模板

时间:2014-03-25 19:48:50

标签: specflow scenarios

我正在尝试使用三种不同的UserID /密码组合执行整个SpecFlow功能。我很难在.feature文件中找到一种方法,而不必在MSTest中引入任何循环。

在场景级别,我这样做:

Scenario Template: Verify the addition functionality
Given the value <x>
And the value <y>
When I add the values together 
Then the result should be <z>

Examples:
|x|y|z|
|1|2|3|
|2|2|4|
|2|3|5|

有没有办法在功能级别执行类似的表格,这会导致为表格中的每一行执行整个功能?

是否还有其他功能可以做同样的事情?

3 个答案:

答案 0 :(得分:2)

我不认为你的代码片段正在发挥作用吗?我已经通过我认为你需要的更正(正如Fresh还指出)更新了下面的内容以及一些可能的改进。

使用此代码段,您将看到针对示例表中的每一行运行方案。因此,第一个测试将与Bob&#39;和&#39;密码&#39;,让你的工具添加1和2并检查答案是否为3。

我还添加了一个ID列 - 这是可选的,但我发现使用ID号读取结果要容易得多。

Scenario Outline: Verify the addition functionality
    Given I am connecting with <username> and <password>
    When I add <x> and <y> together 
    Then the result should be <total>

Examples:
    | ID | username | password | x | y | total |
    | 1  | Bob      | password | 1 | 2 | 3     |
    | 2  | Helen    | Hello123 | 1 | 2 | 3     |
    | 3  | Dave     | pa£sword | 1 | 2 | 3     |
    | 4  | Bob      | password | 2 | 3 | 5     |
    | 5  | Helen    | Hello123 | 2 | 3 | 5     |
    | 6  | Dave     | pa£sword | 2 | 3 | 5     |
    | 7  | Bob      | password | 2 | 2 | 4     |
    | 8  | Helen    | Hello123 | 2 | 2 | 4     |
    | 9  | Dave     | pa£sword | 2 | 2 | 4     |

答案 1 :(得分:0)

  

“有没有办法在功能级别上执行类似的表格   导致对表中的每一行执行整个功能?“

不,Specflow(实际上是Gherkin语言)没有“特征大纲”的概念,即指定应该完整运行的特征集合的方法。

您可以通过使用Specflow标记来标记相关方案,从而实现您的目标。然后,您可以使用测试运行器触发使用该标记测试所有场景,例如

@related
Scenario: A
    Given ...etc...

@related
Scenario: B
    Given ...etc.

答案 2 :(得分:0)

SpecFlow + Runner(又名SpecRun,http://www.specflow.org/plus/)提供基础结构(称为测试目标),以便能够使用不同的设置运行相同的测试套件(或选定的方案)。有了这个,你可以解决你提到的问题。它还可以用于使用不同的浏览器等运行相同的Web测试。请查看此截屏视频以获取详细信息:http://www.youtube.com/watch?v=RZYV4Dvhw3w