Specflow:对场景和场景大纲使用相同的步骤定义

Posted

技术标签:

【中文标题】Specflow:对场景和场景大纲使用相同的步骤定义【英文标题】:Specflow: using same step definition for scenario and scenario outline 【发布时间】:2016-02-13 16:40:53 【问题描述】:

我的功能文件包含一个用于成功登录的“场景”测试和一个用于测试应该不成功的多个登录详细信息的“场景大纲”测试。

@web
Scenario: Successful login
    Given I have entered username 'tomsmith' and password 'SuperSecretPassword!' into the application
    When I login
    Then I should be informed that login was successful

@web
Scenario Outline: Unsuccessful login
    Given I have entered username <username> and password <password> into the application
    When I login
    Then I should be informed that login was unsuccessful

    Examples: 
    | testing                          | username | password             |
    | invalid combination 1            | test     | test                 |
    | special characters               | $$$      | SuperSecretPassword! |

我希望两者都使用相同的步骤定义(因为它们只是传递参数)

我的步骤定义是:

[Given(@"I have entered username '(.*)' and password '(.*)' into the application")]
public void GivenIHaveEnteredUsernameAndPasswordIntoTheApplication(string p0, string p1)

    login = new LoginPage();
    login.with(p0, p1);

问题在于场景大纲测试没有运行,它们返回“待处理”错误:待处理:没有为一个或多个步骤找到匹配的步骤定义

并建议步骤定义应为:

[Given(@"I have entered test and test into the application")]

有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

你的问题在这一行:

Given I have entered username <username> and password <password> into the application

应该是

Given I have entered username '<username>' and password '<password>' into the application

您只是错过了' 标记

【讨论】:

顺便说一句,我很想把所有场景都放到大纲中,并有一个额外的列,其中包含truefalse的结果并将最后一步更改为@ 987654326@ 但 YMMV 谢谢山姆,现在可以了。我也会看看你的建议来结合场景,因为这更有意义!再次感谢 谢谢山姆。我还不能投票,因为我的声誉

以上是关于Specflow:对场景和场景大纲使用相同的步骤定义的主要内容,如果未能解决你的问题,请参考以下文章

Specflow - 场景大纲测试被忽略

SpecFlow:场景大纲示例

如何在下拉列表中选择与 specflow 大纲值相同的值

您可以在 SpecFlow 的场景大纲中标记各个示例吗?

具有多个场景的 Specflow 场景大纲

Specflow:为许多场景大纲维护一个示例表