gpt4 book ai didi

ruby - 从 cucumber 步骤中提取场景大纲(或读取标签)

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:24 24 4
gpt4 key购买 nike

如果我的场景是这样开始的:

  @my-tag

Scenario Outline:
Admin user changes email

Given I register a random email address

...

是否可以在单个步骤定义中读取场景大纲文本或@my-tag?例如,在 I register a random email address 步骤中,如果它在给定场景或标记值下运行,我想打印调试信息。

最佳答案

您不能直接从步骤定义中访问该信息。如果您需要该信息,则必须在 before Hook 期间捕获它。

cucumber v3+

下面的 before hook 将捕获特征名称、场景/大纲名称和标签列表。请注意,此解决方案适用于 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 以了解您的条件逻辑。

cucumber v2

对于 Cucumber v2,所需的钩子(Hook)更复杂:

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"]

关于ruby - 从 cucumber 步骤中提取场景大纲(或读取标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18364986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com