Как передать имя сценария из файла объектов Cucumber в качестве параметра в шагах Cucumber? - PullRequest
1 голос
/ 30 октября 2019

Мне нужна помощь, был бы признателен, если кто-то может помочь?

Мне нужно передать Имя сценария в файле объектов Cucumber в качестве параметра в шагах ..

На шаге Background. - Я запускаю браузер и захожу в приложение, чтобы мне не приходилось повторять одни и те же шаги в каждом сценарии. Существует метод JAVA, чтобы начать запись видео для графического интерфейса пользователя, который используется в фоновом тесте, и запись видео будет там для отдельных сценариев. Так что, если в файле возможностей есть 10 сценариев, запись видео должна быть10 выходов, на которых показан прогон автоматизации для этих 10 сценариев. Метод захвата видеозаписи сохраняет имя файла на основе передаваемого аргумента.

Например, мой сценарий в файле Feature:

Feature: Do Something

Background:
    Given I start the recording for the scenario "Pass the scenario name here"
    And I navigate to the login page
    When I submit username and password
    Then I should be logged in 

Scenario: Scenario Name
    Given I start the test for "Scenario Name"
    Then it should do something
    And stop the recording

Scenario: Scenario Name 2
    Given I start the test for "Scenario Name 2"
    Then it should do something
    And stop the recording

Как передатьИмя сценария в качестве параметра шага?

1 Ответ

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

Начало записи теста не относится к тесту на огурец. И, как вы обнаружили, очень трудно выполнить то, что вы хотите.

Вот где Крючки для огурцов могут помочь:

@Binding
public class TestRecorder {
    private final VideoRecorder videoRecorder;

    public TestRecorder() {
        this(new VideoRecorder(...));
    }

    public TestRecorder(VideoRecorder videoRecorder) {
        this.videoRecorder = videoRecorder;
    }

    @Before
    public void BeginRecording(Scenario scenario) {
        String scenarioName = scenario.getName();

        // do something with scenarioName and start recording...
        videoRecorder.start();
    }

    @After
    public void StopRecording(Scenario scenario) {
        String scenarioName = scenario.getName();

        // Stop recording, and use scenarioName to save to a file
        videoRecorder.stop();
    }
}

Перед началом сценария,начать запись видео. Класс TestRecorder может объявлять закрытые поля для хранения ссылки на видеорегистратор. Объект Scenario, переданный в хуки сценариев до и после (BeginRecording и StopRecording), предоставляет вам информацию о сценарии, включая имя. Этого должно быть достаточно для сохранения видеозаписи в файл с использованием имени сценария в качестве имени файла.

И, поскольку это всего лишь POJO, вы можете написать несколько модульных тестов для функции записи видео (еслиВы действительно хотели).

Теперь ваши тесты на огурец могут оставаться сфокусированными на тестируемой системе, а не на тестировании системы, не выполняющем мониторинг:

Feature: Do Something

Background:
    Given I navigate to the login page
    When I submit username and password
    Then I should be logged in 

Scenario: Scenario Name
    When I do the thing
    Then it should do something

Scenario: Scenario Name 2
    When I do the thing
    Then it should do something

Нет необходимости передавать имя сценария изфайл функции. Все это делается "за кулисами" в крючках с огурцом.

...