Я поднял аналогичный вопрос, но сформулировал это плохо и так не получил ответы, которые я получил после. Вот еще одна попытка:Избегайте дублирования кода при определении заданий Gherkin Given и When
Так что я ценю, что утверждения огурца огурца, указанные в Огурце, аналогичны предварительным условиям тестового случая. Я ценю, что некоторые считают, что это не должно включать взаимодействие с пользователем, но ради этого вопроса я собираюсь не согласиться с этой точкой зрения.
Вот три сценария:
Scenario: Test a song can be played
Given I setup a new account and default user
When I add a "2nd" user
And the "2nd" user starts playing a song
Then I should see a song is playing
Scenario: Test a playing song being stopped (version A)
Given I setup a new account and default user
And I add a "2nd" user
And the "2nd" user starts playing a song
When the "2nd" user stops playing a song
Then I should see a song is not playing
Scenario: Test a playing song being stopped (version B)
Given a "2nd" user is playing a song
When the "2nd" user stops playing a song
Then I should see a song is not playing
Так что я понимаю, что вариант B выше лучше с точки бизнес-пользователей, чем версия А. Однако из кода повторного использования точки зрения, конечно, версия B потребует Данное заявление повторить код, используемый в большинстве первого сценария?
Приветствия,
Чарли
Вы правы, повторное использование шагов необходимо при написании сценариев. Я предполагаю, что вы не слышали о шаблоне объекта страницы? Этот шаблон способствует инкапсуляции всех действий, которые могут выполняться на странице в собственный класс. Использование этого шаблона поможет вам в значительной степени. См. Эту статью, которая сделает вопросы более понятными http://blog.josephwilk.net/cucumber/page-object-pattern.html –
Привет, свежий. Да, я использую эквивалент POM, поскольку я тестирую службы, а не объекты браузера. Тем не менее, я по-прежнему не могу копировать и вставлять даже 3 строки кода для каждого шага и, следовательно, разделять частные методы, причем код POM внутри них является дополнительным уровнем извлечения, но стоит сделать :-) –
Ah Я понимаю. Да, то, что вы делаете, имеет большой смысл. –