获取 Ruby Cucumber 2.4 中的当前功能名称/描述?

问题描述 投票:0回答:2

我试图在运行测试时获取当前的功能名称或描述。这是在 Before 挂钩中完成的,例如

name = scenario.feature.name
name = scenario.feature.description
。然而,似乎
feature
甚至从旧版 API 中删除了,而且我找不到获取特征信息的新方法。是否仍然可以获得当前功能名称或描述或有关 Cucumber 2.4(Ruby gem)中该功能的任何其他信息?

这个不再出现在 Cucumber gem 2.4.0 中。

ruby rubygems cucumber legacy
2个回答
3
投票

钩子现在将场景对象作为参数传递给它们的块:

Before do |scenario|
  puts scenario.feature.name
  puts scenario.name
end

这适用于

cucumber 2.4.0
及其依赖项
cucumber-core 1.5.0

我用
Before
After
钩子验证了它;
BeforeStep
AfterStep
挂钩的工作方式不同。

请注意,

secenario.feature
Cucumber::Core::Ast::Feature
(不再是
Cucumber::Ast::Feature
;核心现在位于其自己的宝石中)。


0
投票

before 钩子实际上并不产生场景对象,它产生一个包裹

Cucumber::RunningTestCase
Cucumber::Core::Test::Case
。我们可以使用
AstLookup
来解析场景描述,如下所示:

Before do |test_case|
  puts test_case.name
  puts scenario(test_case).description
end

def scenario(test_case)
  # Cucumber doesn't provide direct access to the scenario so this hack is necessary
  cucumber_config = ObjectSpace.each_object(Cucumber::Configuration).first
  ast = Cucumber::Formatter::AstLookup.new(cucumber_config)
  ast.scenario_source(test_case).scenario
end
© www.soinside.com 2019 - 2024. All rights reserved.