Как структурировать сценарии BDD для ситуаций с большим количеством переменных - PullRequest
0 голосов
/ 15 октября 2019

Наша команда является новичком в разработке / спецификации BDD, и с точки зрения автоматизации мы хотели бы получить несколько советов по настройке сценариев BDD (и шагов) в ситуации, когда существует много переменных, например, с формами.

Вот ситуация: форма для создания сотрудников, которая состоит из нескольких предметов, таких как личная информация, сведения о работе, зарплата и т. Д.

Возможная схема сценария, которую разработала команда:

Учитывая Я хочу добавить нового сотрудника
И должность называется " jobtitle * "
Когда Я отправляю форму
Затем отправляется уведомление " manager "

Примеры:
| jobtitle | manager |
| Developer | John Doe |

Приведенные выше шаги описывают только решающие факторыдля исхода сценария. То, какое имя может иметь человек или какую зарплату он / она получит, не повлияет на сценарий. Однако в другом сценарии решающим фактором может быть другое поле, например, чей-то отдел. В этом случае, как бы связать сценарии или базовые шаги, чтобы мы могли использовать их как можно больше? Поскольку, хотя в этом примере заголовок задания является решающим фактором, нам все равно необходимо заполнить все остальные обязательные поля, чтобы иметь возможность отправить форму. Любой совет приветствуется!

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Я бы определил некоторых типов сотрудников и получил бы правильные детали в коде.

например: младший администратор, старший администратор, помощник менеджера Каждое описание говорит что-то о деталях работы, зарплате и роли.

Исходя из этого, вы генерируете зарплату и описание работы в методе.

В вашем сценарии bdd:
Учитывая, что у меня есть младший администратор сотрудник
где младший администратор - это параметр, который можно использовать для получения нужного типа данных и создания пользователя.

    /**
     * @When /^I have an (junior admin|senior hr) employee$/
     */
    public function iHaveAnEmployee($employeeType)
    {
        // generate data for employee
        $employee = someMethodThatGeneratesEmployeeDetails($employeeType);

       // create the employee
       someMethodThatCreatesTheEmployee($employee);
    }

Если вы хотите увидеть эти подробности в отчете, найдите способраспечатайте их там после выполнения шага.

0 голосов
/ 15 октября 2019

Использовать DataTable для параметров

Пример:

    Scenario Outline:
    Given I am on the new user registration page
    When I enter invalid data on the page
    |personal information| job details| salary|  //parameters
    Then close the browser.

    Examples:
    |jobtitle|manager|
    |Developer|John Doe|


        @When("^I enter invalid data on the page$") 
           public void enterData(DataTable table){ 
              //Initialize data table 
              List<list> data = table.raw();
              System.out.println(data.get(0).get(0));//personal information
    System.out.println(data.get(0).get(1));//job details
    System.out.println(data.get(0).get(2));//salary
...