Вопрос по – Можно ли повторно использовать функцию как «Данную» для другой функции?

8

Можно ли повторно использовать функцию в качестве & quot; предоставленной & quot; для другой функции?

Или я пытаюсь сделать что-то, чего не должен делать

в основном мои функции выглядят так:

Scenario: Creating a basic account with valid details (happy path)
  Given I am on the "signup" page
  And I enter all the right details #this is shortened of about 20 steps for your reading ease
  When I press the button labelled "Sign up"
  Then I should see the text "Thanks for signing up"
  And I should have an email from "[email protected]" titled "Confirm your account Michael"
  And the database should contain a record for the user marked as unconfirmed

Scenario: Confirming account via email
  Given I have created a basic account
  When I open the confirmation email and visit the url to confirm the account
  Then I should be logged in
  And the database should contain a record for the user makred as confirmed

Я очищаю свою БД после каждой функции, так как все они должны быть в состоянии запускаться индивидуально ...

Я поступаю об этом неправильно?

Спасибо

Возможный дубликат:stackoverflow.com/questions/7646696/… Jon M
@JonM Хорошая ссылка на связанный вопрос. Однако, хотя ответы оказались схожими, я думаю, что вопросы немного расходятся. Вопрос, на который вы ссылаетесь, касается совместного использования блоков, тогда как этот вопрос касается вызова функций из функций - то, что Cucumber использовал для явной поддержки, но больше не делает. Todd A. Jacobs

Ваш Ответ

2   ответа
7
The Problem

больше не поддерживается в огурце.

Помимо других проблем с этим подходом, ваши тесты будут медленнее и взаимозависимы, так как вы будете:

driving account creation through a browser, and making all your tests dependent on the account-creation test passing.

Не делай этого.

The Cucumber Way

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

Given that user account "Test User" does not exist Given that user account "Test User" exists

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

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

0

повторно-огурец-сценарии для вызова сценария, выполнив:

Given the scenario "@scenario_tag"

.

Given the scenario "@scenario_tag" with parameters
"""
{
  "1": ["step1_param1", "step1_param2"],
  "2": ["step2_param1", "step2_param2", "step2_param3"],
  "3": ["step3_param1", "step3_param2", "step3_param3"],
}
"""

или создание переменных корнишона ...

Given the variable "$variable_name" is equal to
"""
#JSON object
"""

или создание сценарных функций и вызов их, делая ...

Given the scenario "@$scenario_function_tag" where variable "$variable_name" is "value_to_replace"

и больше...

Похожие вопросы