Вытащить схему сценария (или прочитать тег) из шага cucumber
Если у меня есть сценарий, который начинается так:
@my-tag
Scenario Outline:
Admin user changes email
Given I register a random email address
...
можно ли прочитать текст схемы сценария или @my-tag
в определении отдельного шага? Например, в I register a random email address
шаг я хотел бы напечатать отладочную информацию, если она работает по заданному сценарию или значению тега.
1 ответов
вы не можете получить доступ к этой информации непосредственно из определения шага. Если вам нужна информация, вам придется захватить ее во время перед крючком.
огурец v3+
следующее перед крючком захватит имя функции, имя сценария / контура и список тегов. Обратите внимание, что это решение для Cucumber v3.0+. Более ранние версии см. В конце ответа.
Before do |scenario|
# Feature name
@feature_name = scenario.feature.name
# Scenario name
@scenario_name = scenario.name
# Tags (as an array)
@scenario_tags = scenario.source_tag_names
end
в качестве примера, функция файл:
@feature_tag
Feature: Feature description
@regular_scenario_tag
Scenario: Scenario description
Given scenario details
@outline_tag
Scenario Outline: Outline description
Given scenario details
Examples:
|num_1 | num_2 | result |
| 1 | 1 | 2 |
С шагом, определенным как:
Given /scenario details/ do
p @feature_name
p @scenario_name
p @scenario_tags
end
даст результаты:
"Feature description"
"Scenario description"
["@feature_tag", "@regular_scenario_tag"]
"Feature description"
"Outline description, Examples (#1)"
["@feature_tag", "@outline_tag"]
затем вы можете проверить @scenario_name или @scenario_tags для вашей условной логики.
огурец v2
для огурца v2 требуемый крючок является более сложным:
Before do |scenario|
# Feature name
case scenario
when Cucumber::Ast::Scenario
@feature_name = scenario.feature.name
when Cucumber::Ast::OutlineTable::ExampleRow
@feature_name = scenario.scenario_outline.feature.name
end
# Scenario name
case scenario
when Cucumber::Ast::Scenario
@scenario_name = scenario.name
when Cucumber::Ast::OutlineTable::ExampleRow
@scenario_name = scenario.scenario_outline.name
end
# Tags (as an array)
@scenario_tags = scenario.source_tag_names
end
выход немного отличается:
"Feature description"
"Scenario description"
["@regular_scenario_tag", "@feature_tag"]
"Feature description"
"Outline description"
["@outline_tag", "@feature_tag"]