Sie können nicht direkt auf diese Informationen innerhalb einer Schrittdefinition zugreifen. Wenn Sie die Informationen benötigen, müssen Sie sie während eines Vorher-Hooks erfassen.
Gurke v3 +
Die folgende bevor Haken wird die Funktion Namen, Szenario/outline Namen und die Liste der Tags erfassen. Beachten Sie, dass diese Lösung für Cucumber v3.0 + gilt. Für frühere Versionen, sehen Sie das Ende der Antwort.
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
Als Beispiel die Feature-Datei:
@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 |
Mit Schritt wie folgt definiert:
Given /scenario details/ do
p @feature_name
p @scenario_name
p @scenario_tags
end
den Ergebnissen geben:
"Feature description"
"Scenario description"
["@feature_tag", "@regular_scenario_tag"]
"Feature description"
"Outline description, Examples (#1)"
["@feature_tag", "@outline_tag"]
Sie könnten dann überprüfen die @scenario_name oder @scenario_tags für Ihre bedingte Logik.
Gurke v2
Für Gurke v2 ist die erforderliche Haken ein komplizierter:
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
Der Ausgang ist etwas anders:
"Feature description"
"Scenario description"
["@regular_scenario_tag", "@feature_tag"]
"Feature description"
"Outline description"
["@outline_tag", "@feature_tag"]
Nizza Frage, Dank –