Serenity-Cucumber, как использовать один и тот же сценарий для нескольких файлов объектов - PullRequest
0 голосов
/ 10 мая 2019

Используя Serenity-Cucumber, я пытаюсь создать набор тестов, чтобы я мог повторно использовать определения шагов («Дано», «Когда», «И») в нескольких файлах объектов.

Например:

Scenario: User Logs in
    Given User is on the Login page
    When User Logs in using 'userName' and 'password'
    Then User on page containing: '/logedin/url/path'

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

Тест должен будет выполнить шаги входа в систему, а затем обновить шаги пароля.Судя по моим ограниченным знаниям, мне нужно иметь это на шаге Background:.Поэтому перед моим сценарием обновления пароля у меня будет следующее:

Background: User Logs in
    Given User is on the Login page
    When User Logs in using 'userName' and 'password'
    Then User on page containing: '/logedin/url/path'

Scenario: User Updates Password
    Given User is on the Manage Account page
    When User clicks Update Password
    And User type 'existingPassowrd' and 'newPassword'
    And User clicks Update Password
    Then Password is displayed as 'newPassword'

Это дает мне ошибку cucumber.runtime.DuplicateStepDefinitionException, которую я понимаю, но я продолжаю читать, что serenity-cucumber дает возможность повторно использовать шаги, которыеопять получаю и это хорошая идея.

Итак, как повторно использовать сценарии или определения шагов сценария в других тестах?Мне не нужен новый метод для них, мне просто нужно вызвать существующий метод, который я создал в предыдущем сценарии.

Есть ли способ сделать это?

Могу ли я сделатьчто-то вроде этого?(или мне даже не нужно выписывать фон?)

  @Steps
  User user;

  //This is the background in the feature file.
  //Instead of creating methods, I would just reference the pre-existing ones from the other test case.

  @Given("^User is on the Login page$")
  @When("^User Logs in using '(.*)' and '(.*)'$")
  @Then("^User on page containing: '(.*)'$")

  //This is the Scenario in the feature file

  @Given("^User is on the Manage Account page$")
  public void user_is_on_the_manage_account_page(String expectedUrl) throws Exception {

    user.is_on_page(expectedUrl);
  }

   @When("^User clicks Update Password$")
  public void user_clicks_update_password() throws Exception {

    user.click_update_password();
  }

  code continues
  ...
  ...
  ...

1 Ответ

0 голосов
/ 20 мая 2019

Нашел ответ ...

Пока текст файла функции:

Given User is on the Login page

записано одинаково в нескольких файлах объектов, вам нужно написать метод «определения шага» только один раз

 @Given("^User is on the Login page$")
  public void user_is_on_the_login_page() throws Exception {

    user.is_on_login_page();
  }

«Пользователь на странице входа в систему» ​​может продолжать переписываться для нескольких файлов объектов, он всегда будет использовать один и тот же метод user_is_on_the_login_page(), и не нужно писать код в файле определения шага этого теста.

...