加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 从黄瓜步骤中拉出场景轮廓(或读取标签)

发布时间:2020-12-16 19:29:29 所属栏目:百科 来源:网络整理
导读:如果我有一个像这样开始的场景: @my-tag Scenario Outline: Admin user changes email Given I register a random email address … 是否可以在单个步骤定义中读取场景大纲文本或@ my-tag?例如,在I中注册一个随机电子邮件地址步骤,如果它在给定方案或标签
如果我有一个像这样开始的场景:
@my-tag

  Scenario Outline:
  Admin user changes email

    Given I register a random email address

是否可以在单个步骤定义中读取场景大纲文本或@ my-tag?例如,在I中注册一个随机电子邮件地址步骤,如果它在给定方案或标签值下运行,我想打印调试信息.

解决方法

您无法直接从步骤定义中访问该信息.如果您需要这些信息,则必须在之前的钩子中捕获它.

黄瓜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

对于Cucumber 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"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读