Non è possibile accedere a tali informazioni direttamente da una definizione di passaggio. Se hai bisogno delle informazioni, dovrai catturarle durante un hook prima.
cetriolo v3 +
quanto segue prima di gancio catturerà il nome della funzione, scenario Nome/contorno e l'elenco dei tag. Nota che questa soluzione è per Cucumber v3.0 +. Per le versioni precedenti, vedere la fine della risposta.
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
A titolo di esempio, il file della caratteristica:
@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 |
Con passo definito come:
Given /scenario details/ do
p @feature_name
p @scenario_name
p @scenario_tags
end
darà i risultati:
"Feature description"
"Scenario description"
["@feature_tag", "@regular_scenario_tag"]
"Feature description"
"Outline description, Examples (#1)"
["@feature_tag", "@outline_tag"]
Si potrebbe quindi verificare il @scenario_name o @scenario_tags per la tua logica condizionale.
cetriolo v2
Per cetriolo v2, il gancio richiesto è un più complesso:
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
L'uscita è leggermente diverso:
"Feature description"
"Scenario description"
["@regular_scenario_tag", "@feature_tag"]
"Feature description"
"Outline description"
["@outline_tag", "@feature_tag"]
piacevole domanda, grazie –