Стандартный способ исключения «тестов» в Cucumber заключается в добавлении к ним тега для их идентификации, а затем при вызове Cucumber вы указываете, какие теги включать / исключать.В вашем примере вы можете пометить конкретный сценарий:
@needs_permission
Scenario: View users billing information
Или пометить весь объект:
@needs_permission
Feature: Administrative area
Scenario: View users billing information
Или пометить определенные примеры в схеме сценария:
Scenario Outline: Visit a page
Given I visit "<page>"
Examples: Don't need permission
| page |
| index |
| sitemap |
@needs_permission
Examples: Do need permission
| page |
| admin |
Теперь, когда вы запускаете Cucumber, вы можете при необходимости исключить эти теги:
Когда разрешение включено и вы хотите запустить все тесты:
cucumber .
Когда разрешениевыключен, и вы хотите исключить тесты, которые в нем нуждаются:
cucumber . -t ~@needs_permission
Альтернатива, которую я использовал со смешанными результатами, если вы действительно не знаете заранее, - пометить шаг как pending
если он не применяется с учетом текущего сценария, например,
Given /^I visit some page which needs permission$/ do
pending "Permissions aren't enabled - skipping" unless permissions_enabled?
end
Это помечает шаг как «ожидающий», что на самом деле означает «не полностью реализованный», что не идеально, особенно если у вас естьмного таких шагов - может быть трудно гарантировать, что другие нереализованные шаги не заползут случайно и не будут скрыты всеми теми, которые вы намеренно пометили как таковые.