Можете ли вы сохранить результат (данный) в переменной в файле функций Gherkin, а затем сравнить переменную с другим результатом (затем)? (Огурец за Java) - PullRequest
1 голос
/ 07 мая 2020

Я новичок в Cucumber для Java и пытаюсь автоматизировать тестирование сервера SpringBoot, поддерживаемого сервером MS SQL.

У меня есть конечная точка «Получить всех сотрудников».

При написании традиционного файла функций мне нужно будет перечислить всех сотрудников в разделе @Then. Это невозможно с тысячами сотрудников.

Итак, я просто хочу получить количество строк в таблице Employee в базе данных, а затем сравнить с количеством объектов, возвращенных из конечной точки «Получить всех сотрудников».

Сравнить

SELECT count(*) from EMPLOYEE

с размером списка, возвращенного из

List<Employee> getAllEmployees()

Но как сохранить rowcount в переменной в файле функций, а затем передать его в метод stepdefs Java?

Я не нашел способа, которым Gherkin позволяет это.

Ответы [ 2 ]

0 голосов
/ 21 мая 2020

Написав несколько файлов сценариев и функций, я понял это о Cucumber и исправил проблему.

Gherkin / Cucumber не является языком программирования. Это просто язык спецификации. Когда интерпретатор достигает таких ключевых слов, как Given, Then, вызываются методы сопоставления в коде Java. Так что они всего лишь пусковые механизмы.

Эти методы являются частью класса Java glue. Данные не передаются из класса Java в файл функций огурцов. Класс создается в начале и сохраняется до конца. Из-за этого он может сохранять состояние.

Итак, из моего примера в вопросе выше, ответ Then от вызова конечной точки Spring будет сохранен в member variable в glue класс. Следующий вызов Then для проверки результата вызовет соответствующий метод glue, который будет обращаться к данным в переменной-члене для выполнения сравнения.

Значит, Корнишон не может этого сделать, но Java на более низком уровне в классе glue может.

0 голосов
/ 10 мая 2020

Вы можете создать пакет, например, с именем dataRun (с соответствующими классами в пакете) и сохранить там детали во время теста через сеттеры.

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

Между прочим, можно сравнить имена сотрудников (а не только подсчет), если вы поместите их в список и сравните списки.

...