2

我正在尝试使用三种不同的用户 ID/密码组合来执行整个 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|

有没有办法在特征级别做一个类似的表,这将导致为表中的每一行执行整个特征?

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

4

3 回答 3

2

我认为您拥有的代码段不起作用是吗?我已经用我认为你需要的更正更新了下面的内容(正如 Fresh 也指出的那样)和一些可能的改进。

使用此代码段,您将看到针对示例表中的每一行运行该场景。因此,第一个测试将连接“鲍勃”和“密码”,让您的工具添加 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     |
于 2014-03-26T10:02:49.823 回答
0

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

于 2014-04-08T07:09:51.493 回答
0

“有没有办法在特征级别做一个类似的表,这将导致整个特征在表中的每一行都被执行?”

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

您可以通过使用 Specflow 标签来标记相关场景来实现您正在寻找的东西。然后,您可以使用您的测试运行程序来触发使用该标签的所有场景的测试,例如

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

@related
Scenario: B
    Given ...etc.
于 2014-03-31T22:01:21.550 回答