Как обобщить шаги входа в систему Selenium Cucumber и избежать повторяющихся шагов в файле возможностей? - PullRequest
0 голосов
/ 08 февраля 2019

Я использую Selenium + Cucumber для своего проекта автоматизации и написан на Java.Я написал файл функций, в котором я повторяю 4-5 шагов входа в систему в каждом сценарии.Ниже приведены строки входа в систему, которые повторяются в каждом сценарии.

Scenario: Display the relevant items assigned when logged in as an testUser
    Given I am on the login page
    And I fill email with valid testUser email address
    And I fill password with valid testUser password
    And I press Log in
    When I click on the selector
    Then I should see all the items assigned to my testUser account

Здесь параметризована клавиатурная работа «testUser».Иногда такие же шаги будут повторяться с другим пользователем, таким как «stageUser».Для такого рода шагов Cucumber предоставляет способ обобщить эти шаги каким-то образом?Поскольку каждый сценарий начинается с этих 6 строк, таким образом, сценарии выглядят больше и с этими повторяющимися шагами.

Любой совет будет высоко ценится.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

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

  Background: 
    Given Do given
    When Do when
    Then Do then

  Scenario: User is - Test User One
    And user name is

  Scenario: User is - Test User Two
    And user name is

Затем захватите этого пользователя в ловушку До.Пользователь будет доступен по шагам в сценарии.

private String user;

@Before
public void before(Scenario scen) {
    this.user = scen.getName().substring(scen.getName().indexOf('-') + 2);
}
0 голосов
/ 10 февраля 2019

Напишите лучшие сценарии и шаги.Вы все о том, КАК вы входите в систему, поэтому повторение является болезненным.Вместо этого напишите шаги, которые только о том, что вы делаете;их легче использовать повторно.

Итак ...

Scenario: Login
  Given I am registered
  When I login
  Then I should be logged in

затем позже

Feature: Something that requires me to be logged in

Background
  Given I am logged in

Scenario: Do something
  When I do something
  Then something should be done

Посмотрите, как я сократил большую кучу фона во что-то гораздо более простоеи аннотация.

Я дам несколько советов по реализации здесь

Given I am logged in
  @i = create_registered_user
  login(user: @i
end

When I login
  login(user: @i)
end

Given I am registered
  @i = create_registered_user
end

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

0 голосов
/ 08 февраля 2019

Используйте аннотации @Before и @After для запуска до и после каждого сценария соответственно.В случаях, когда нам нужно выполнить глобальную настройку / очистку: @BeforeSuite и @ AfterSuite

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