зациклить файл объекта на заданных данных - PullRequest
1 голос
/ 12 апреля 2019

Справочная информация:

  1. Существует более 500 пользователей. Их имя пользователя и пароль хранятся в файле CSV.
  2. Каждый пользователь должен передать этот .feature файл, который состоит из 18 сценариев.

Проблема: Я знаю, что мы можем использовать data tables, scenario outline, но данные, упомянутые здесь, будут ограничены связанными сценариями, только не для всего файла объектов.
Я хочу, чтобы .feature выполнил выполнение первой строки данные, которые он должен перейти к следующей строке из файла CSV, и продолжать делать это до конца файла CSV.

Я пытался заменить таблицу данных на лист MS Excel, использовал (POI apache файлы для чтения электронных таблиц), но опять-таки произошло то же самое, что он работал только для этого конкретного сценария.

например. Это .feature файл

@regression @userValidation
Feature: User permission validation

  Scenario Outline: Verify that user is able to login
    Given I am on login page
    When I enter "username" and "password"
    Then I see new user successfully loggedin
 Examples:
      | username |password|  // picked from excel sheet
      | uname    |pwd     |  // picked from excel sheet

  Scenario: Verify that user can change the password
    Given I am on user profile page
    When I enter change password twice
    Then I get password successfully changed pop-up

Теперь сценарий один продолжает работать 500 раз (количество строк в CSV-файле), как только все данные завершены, запускается второй сценарий. То, что я хочу, это оба сценария следует запустить для строки 1, затем оба сценария должны выполнить для строки 2 и т. д. 500 раз.

Как я могу это сделать? Есть ли Java или Junit способ сделать это, если это невозможно в Cucumber?

Я использую Java, Selenium WebDriver, JUnit, Cucumber, Maven в Windows

1 Ответ

0 голосов
/ 13 апреля 2019

Одним из способов является добавление примеров для каждого сценария в файл объектов. Вы уже читаете данные из внешнего источника, поэтому они не будут дублировать данные на уровне сценария.Тем не менее вам нужно добавить примеры для каждого сценария.Например:

@regression @userValidation
Feature: User permission validation

Scenario Outline: Verify that user is able to login
    .....
Examples:
      | username |password|  // picked from excel sheet
      | uname    |pwd     |  // picked from excel sheet

Scenario Outline: Verify that user can change the password
  ...
Examples:
      | username |password|  // picked from excel sheet
      | uname    |pwd     |  // picked from excel sheet

В этом случае вам необходимо соблюдать осторожность при выполнении каждого сценария.Если вы используете огурчик с qaf , он может выглядеть следующим образом:

@regression @userValidation
Feature: User permission validation

 Scenario: Verify that user is able to login
    .....
 Examples: {'datafile':'resources/usersdata.csv'}

 Scenario: Verify that user can change the password
  ...
 Examples: {'datafile':'resources/usersdata.csv'}

Более того, с последним синтаксисом BDD2 , вы можете получить свой файл объектов, как показано ниже:

@regression @userValidation
@datafile:resources/usersdata.csv
Feature: User permission validation

 Scenario: Verify that user is able to login
    .....

 Scenario: Verify that user can change the password
  ...

Что касается порядка выполнения, qaf обеспечивает запуск сценариев в порядке, определенном в файле объектов.Тем не менее, вы можете указать приоритет в метаданных при использовании синтаксиса BDD2, например, @priority:1 в первом сценарии, @priority:2 во втором и т. Д.

Другой альтернативный вариант для вышеприведенного случая - это изменение первого сценария согласно-условие и рассмотрите это как background, для этого обратитесь , как использовать фон с примерами .

...