场景大纲生成不正确的步骤代码

4
我有以下特性文件 特性:员工_编辑员工特性 检查编辑员工页面
@Employee_EditEmployeeFeature
Scenario Outline: Verify invalid format field error displayed (Email Address)
    Given I enter an invalid worker email address <EmailAddress>
    When I click on the Employee Edit Save button
    Then Check invalid format error displayed for worker Email Address field
Examples: 
| EmailAddress             |
| invalidaddress           |
| invalid address@acme.com |
| invalidaddress@acme      |

@Employee_EditEmployeeFeature
Scenario Outline: Verify invalid format field error displayed (Passport Number)
    Given I enter invalid worker passport number <PassportNo>
    When I click on the Employee Edit Save button
    Then Check invalid format error displayed for worker passport field
Examples:
| PassportNo |
| 1234       |
| AS1234567  |

我從給定的語句中生成了以下步驟代碼。
    [Given(@"I enter an invalid worker email address invalidaddress")]
    public void GivenIEnterAnInvalidWorkerEmailAddressInvalidaddress()
    {
        ScenarioContext.Current.Pending();
    }

    [Given(@"I enter invalid worker passport number (.*)")]
    public void GivenIEnterInvalidWorkerPassportNumber(int p0)
    {
        ScenarioContext.Current.Pending();
    }

由于电子邮件地址步骤生成不正确,例如没有参数,因此当测试运行时,会出现以下错误: 测试名称:VerifyInvalidFormatFieldErrorDisplayedEmailAddress_Invalidaddress 结果消息: Assert.Inconclusive失败。一个或多个步骤未找到匹配的步骤定义。

using System;
using TechTalk.SpecFlow;
namespace MyNamespace
{
    [Binding]
    public class StepDefinitions
{
[Given(@"I enter an invalid worker email address invalidaddress")]
public void GivenIEnterAnInvalidWorkerEmailAddressInvalidaddress()
{
    ScenarioContext.Current.Pending();
}

我在网上搜索了很多,发现其他人也遇到了这个问题,尝试了一些他们提供的解决方案但没有成功。请问有什么建议吗?因为只有在我能够持续生成正确的Scenario Outline特性步骤代码之前,我才能继续进行。


你是如何解决它的? - alansiqueira27
4个回答

1
也许是因为您创建了参数,但VS集成没有正确识别它。 只需将绑定更改为以下内容即可:
[Given(@"I enter an invalid worker email address (.*)")]
public void GivenIEnterAnInvalidWorkerEmailAddress(string invalidEMailAddress)
{
    ScenarioContext.Current.Pending();
}

请查看http://www.specflow.org/documentation/Step-Definitions/了解有关步骤绑定的更多信息。


0
首先,我不使用Example标签,但是在我的测试中我会使用表格。
我通常的做法是:
 [Given(@"I enter an invalid worker email address invalidaddress")]
public void GivenIEnterAnInvalidWorkerEmailAddressInvalidaddress(Table table)
{
    ScenarioContext.Current.Pending();
}

接着,创建一个新的类文件,并随便命名,我给它起名为 Parameters.cs。

在这个类文件中,创建一个公共字符串。以本例来说,我会这样写:

public string EmailAddress { get; set; }

现在填写您的表格方法:

 [Given(@"I enter an invalid worker email address invalidaddress")]
public void GivenIEnterAnInvalidWorkerEmailAddressInvalidaddress(Table table)
{
    var parameters = table.CreateSet<Parameters>();
    foreach (var parameter in parameters){
         Define your action here what you want to do with each email address
    }
}

希望这能有所帮助 :-)

使用表格并且没有为不同情况编写单独的测试是一个不好的想法。你很难看出哪些情况失败了。 - Andreas Willich
我正在为他的问题提供一个解决方案,这些参数:) 如何使用Specflow和不使用Specflow是另一种讨论。 - Anand

0

经过长时间的搜索,我发现我们需要使用双引号

而不是:

<myParameter>

使用:

"<myParameter>"

改为:

When I have a name 'name'

使用:

When I have a "name"

-1
我遇到了同样的问题。如果你想在编写特性文件后正确生成步骤,只需在示例中保留标题,然后生成步骤,你就会看到变化。
你的特性:
@Employee_EditEmployeeFeature
Scenario Outline: Verify invalid format field error displayed (Email Address)
Given I enter an invalid worker email address <EmailAddress>
When I click on the Employee Edit Save button
Then Check invalid format error displayed for worker Email Address field

示例:

| EmailAddress             |

你生成的步骤将会像这样
        [Given(@"I enter an invalid worker email address (.*)")]
    public void GivenIEnterAnInvalidWorkerEmailAddress(string p0)
    {
        ScenarioContext.Current.Pending();
    }

    [When(@"I click on the Employee Edit Save button")]
    public void WhenIClickOnTheEmployeeEditSaveButton()
    {
        ScenarioContext.Current.Pending();
    }

    [Then(@"Check invalid format error displayed for worker Email Address field")]
    public void ThenCheckInvalidFormatErrorDisplayedForWorkerEmailAddressField()
    {
        ScenarioContext.Current.Pending();
    }

在生成步骤之后,您可以添加数据行。

或者只需使用单引号装饰您的参数

Given I enter an invalid worker email address '<EmailAddress>'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接