Схема сценария генерирует неправильный код шага

У меня есть следующий файл функций Feature: Employee_EditEmployeeFeature Check Edit Employee Page

@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 [email protected] |
| 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.


person Cooldudescrib    schedule 25.03.2016    source источник
comment
как ты это решил?   -  person alansiqueira27    schedule 19.01.2019


Ответы (4)


Вероятно, не удалось правильно распознать параметр интеграции VS, когда вы его создали. Просто измените свою привязку на следующую:

[Given(@"I enter an invalid worker email address (.*)")]
public void GivenIEnterAnInvalidWorkerEmailAddress(string invalidEMailAddress)
{
    ScenarioContext.Current.Pending();
}

См. http://www.specflow.org/documentation/Step-Definitions/ для больше информации о привязках шагов.

person Andreas Willich    schedule 25.03.2016

Во-первых, я не использую тег Example, я использую таблицы в своих тестах.

Я бы сделал это следующим образом:

 [Given(@"I enter an invalid worker email address invalidaddress")]
public void GivenIEnterAnInvalidWorkerEmailAddressInvalidaddress(Table table)
{
    ScenarioContext.Current.Pending();
}

Затем создайте новый файл класса и назовите его как хотите, я назову его Paremeters.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
    }
}

Надеюсь это поможет :-)

person Anand    schedule 25.03.2016
comment
Использование таблиц и отсутствие отдельных тестов для разных случаев - плохая идея. Вы не легко видите, какой из случаев терпит неудачу - person Andreas Willich; 25.03.2016
comment
Я просто помогаю с решением его проблемы, с параметрами :) Как и не использовать Specflow - это отдельное обсуждение - person Anand; 25.03.2016

После долгих поисков я обнаружил, что нам нужно использовать двойные кавычки.

Вместо того:

<myParameter>

Использовать:

"<myParameter>"

Вместо того:

When I have a name 'name'

Использовать:

When I have a "name"
person alansiqueira27    schedule 18.01.2019

Я столкнулся с той же проблемой. Если вы хотите, чтобы ваши шаги были сгенерированы правильно после того, как вы запишите свой файл функций, в примерах оставьте только заголовки, затем сгенерируйте свои шаги, и вы увидите изменение.

Ваша особенность:

@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>'
person Adrian Avram    schedule 26.07.2018