Несколько сценариев в файле характеристик спецификации?

После того, как я стал более удобным в разработке, управляемой поведением, используя SpecFlow, мне стало интересно иметь несколько сценариев для одной и той же функции следующим образом:

Register.feature

Feature: Register a new user
    In order to use the system,
    one must register with the system 
    so that one gets authorized and may login

Scenario: Register a new user using valid credentials
    Given I am on the registration page
    When  I have entered my desired username "UserName" and password "password"
      And I have confirmed my password "password"
      And I click the register button
    Then  I shall get confirmation that I am now a registered user

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

  • Введенное имя пользователя слишком короткое
  • Входной пароль слишком короткий
  • Входной пароль не содержит цифр
  • Входной пароль не совпадает с подтвержденным паролем

Просто назвать несколько. Я прочитал о тегах, используя SpecFlow Feature File, чтобы я мог сделать следующее:

@shorterPasswordProvided
Scenario: Register a user using a password that is too short
    Given I am on the registration page
    When  I have entered my desired user name
      And I have provided a password that is too short "allo"
      And I click the Register button
    Then  I shall get an error message which mentions about the password minimum length

@noCredentialsAtAll
Scenario: Register a user using no credentials at all
    Given I am on the registration page
    When  I click on the Register button with no credentials entered
    Then  I shall get an error message that says I have to fill all required fields in

Затем, используя [BeforeScenario("myTag")] должен сделать свое дело.

Хуки позволяют выполнять подмножество тестов, следуя определенным правилам. Итак, When Затем метод может быть выполнен с предопределенным контекстом, то есть с хуком, для которого он должен был быть выполнен, и это упоминается через BeforeScenario или подобный атрибут.

Правильно ли я понял или я в тумане?

Я слишком далеко?

Я что-то пропустил?

Все ли "слишком короткие пароли", "никакие учетные данные не предоставлены" считаются различными сценариями использования, или они представляют собой что-то еще, что может вписаться где-то еще в коде, например сами модульные тесты?

Я имею в виду, что все эти сценарии принадлежат функции Register, и поэтому они должны быть определены в одном и том же файле Feature.Feature SpecFlow Feature, верно?

1 ответ

Решение

Хорошо, у вас есть пара вопросов, поэтому я разберусь с ними:

Затем с помощью [BeforeScenario("myTag")] следует добиться цели.

Атрибут ловушки BeforeScenario используется для запуска некоторого кода перед выполнением сценария. Он часто используется для настройки среды для сценария (например, заполнение тестовой базы данных соответствующими данными); если используется для этой цели, то использование AfterScenario может также использоваться для очистки результата BeforeScenario.

Хуки позволяют выполнять подмножество тестов, следуя определенным правилам. Таким образом, метод When может быть выполнен с предопределенным контекстом.

Если я вас правильно понимаю, вы хотите иметь возможность использовать тег для управления, когда шаг в сценарии может быть запущен / не запущен. Это невозможно с помощью атрибутов хука SpecFlow; есть ловушка BeforeStep, но она позволяет вам выполнить код только до запуска шага, но не позволяет игнорировать этот шаг.

Все ли "слишком короткие пароли", "никакие учетные данные не предоставлены" считаются различными сценариями использования, или они представляют собой что-то еще, что может вписаться где-то еще в коде, например сами модульные тесты?

В вашем примере, да, это разные сценарии для функции "Зарегистрировать нового пользователя". Если вы придерживаетесь строгого подхода BDD к своей разработке, то с вашим подходом к разработке "снаружи внутрь" вы также будете реализовывать модульные тесты (возвращаясь к TDD как части процесса BDD), который также будет охватывать " проверка слишком короткого пароля "и" учетные данные не предоставлены ".

Что касается вашего сценария:

When  I have entered my desired username "UserName" and password "password"

Вместо этого используйте:

When I enter my  username "UserName" 
And I enter my password "password"

Сделав это, вы сможете повторно использовать "Когда я ввожу свой пароль" в "Регистрация пользователя с использованием слишком короткого пароля". Это приводит меня к:

And I have provided a password that is too short "allo"

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

When I enter my password "allo"

По той же причине не используйте:

When I click on the Register button with no credentials entered

просто используйте повторно:

When I click on the Register button
Другие вопросы по тегам