Как использовать общие / общие "блоки" между функциями огурца? - PullRequest
19 голосов
/ 04 октября 2011

Я новичок в огурце, но наслаждаюсь им.

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

Например, у меня может быть 4 сценария, которые все начинаются с одного и того же шага входа в систему:

  given my app has started
     then enter "guest" in "user-field"
     and enter "1234" in "password-field"
     and press "login"
  then I will see "welcome"
  then *** here's the work specific to each script ***

Есть ли способразделить эти первые 5 строк по нескольким сценариям?Какой-то синтаксис "include"?

Ответы [ 2 ]

25 голосов
/ 04 октября 2011

Обычно существует 2 подхода:

Фон

Если вы хотите, чтобы набор шагов выполнялся до каждого сценария в файле объекта:

Background:
     given my app has started
     then enter "guest" in "user-field"
     and enter "1234" in "password-field"
     and press "login"
     then I will see "welcome"

Scenario: Some scenario
    then *** here's the work specific to this scenario ***

Scenario: Some other scenario
    then *** here's the work specific to this scenario ***

Вызов шагов из определений шагов

Если вам нужно, чтобы «блок» шагов использовался в разных файлах объектов, или раздел «Фон» не подходит, поскольку в некоторых сценариях он не нужен, то создайте определение шага высокого уровня, которое вызывает другие:

Given /^I have logged in$/ do
    steps %Q {
         given my app has started
         then enter "guest" in "user-field"
         and enter "1234" in "password-field"
         and press "login"
         then I will see "welcome"
    }
end

Кроме того, в этом случае у меня будет соблазн не вообще реализовывать ваши общие шаги как отдельные шаги, а создать определение одного шага: (при условии, что Капибара)

Given /^I have logged in$/ do
    fill_in 'user-field', :with => 'guest'
    fill_in 'password-field', :with => '1234'
    click_button 'login'
end

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

0 голосов
/ 02 ноября 2014

В более подходящем подходе предлагается использовать «методы» уровня ruby ​​для повторного использования кода вместо вложенных шагов с точки зрения обслуживания и отладки кода.

Ниже приведена ссылка на более подробную информацию: Повторное использование шагов огурца

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...