Как заставить cucumber запускать все функции, если нет подходящего тега

#ruby-on-rails #ruby-on-rails-3 #rspec #cucumber #spork

#ruby-on-rails #ruby-on-rails-3 #rspec #cucumber #spork

Вопрос:

Я использую cucumber с fork. Мне очень нравится run_all_when_everything_filtered на Rspec. это запускает всю спецификацию, если нет соответствующего тега. Могу ли я сделать это с помощью cucumber. пример в моем профиле автоматического тестирования я указываю —tags @wip , но если нет совпадающих тегов, он запускает весь сценарий

Комментарии:

1. Можете ли вы уточнить — вы хотите иметь возможность указывать тег, такой как @wip , и запускать эти сценарии, помеченные как таковые, но если случится так, что ни один сценарий во всем вашем наборе не имеет @wip тега, тогда он вместо этого запустит все?

Ответ №1:

Я почти уверен, что Cucumber не поддерживает это изначально. Если вы используете Guard для их запуска, вы, вероятно, могли бы получить желаемое поведение, вызвав скрипт или пользовательскую задачу rake вместо прямого вызова Cucumber.

Должно быть довольно тривиально написать скрипт или задачу rake для вызова Cucumber с -t @wip аргументом, затем проверить, содержит ли вывод «0 сценариев», и если да, то снова запустить Cucumber без -t аргумента, чтобы выполнить весь набор.

Ответ №2:

Если вы знаете имя тега, вы можете указать тег с «~» перед тегом. То есть --tags ~@wip .

Это означает, что тег, который вы указываете для cucumber, может быть логическим выражением.

  • Параметр «~» перед тегом представляет собой NOT .
  • Вы можете указать OR , если вы пишете --tags @wip1,@wip2 .
  • Вы можете указать AND , написав параметры —tags несколько раз.

Я рекомендую вам запустить cucumber -h и проверить опцию —tags, чтобы увидеть больше информации.

Комментарии:

1. Я хорошо знаком с параметром tags, но я использую guard, поэтому в основном он указывается в cucumber.yml. но переключение на использование тега означает, что я должен отредактировать его вручную. это то, что я делаю сейчас, rspec имеет эту функциональность, когда указан ‘tag’, но тега нет, он запускает всю спецификацию (как будто игнорирует тег). Интересно, есть ли у cucumber эта функция.