这是第一次,所以我会尝试最可读。我在一个功能文件中进行了测试,该文件使用数据表对某些数据进行排序,如下所示:
目前我正在使用scenario.test_steps.map(&:name)
来获取数组中的所有步骤(这是因为与应用程序生命周期软件管理器集成所必需的),这就是我得到的:
Cucumber steps got in the hooks file
我的问题是:是否有可能在钩子文件的前做|场景| 挂钩中获取数据信息?
提前感谢任何帮助过的人!
答案 0 :(得分:1)
在遍历scenario.test_steps
时,每个测试步骤都有一个关联的Cucumber::Core::Ast::Step
。其中包含步骤特定信息,例如步骤名称,数据表等。关联的Ast::Step
将是测试步骤source
的最后一个元素:
test_step.source
#=> [
#=> #<Cucumber::Core::Ast::Feature "Feature: Something" (features/something.feature:1)>,
#=> #<Cucumber::Core::Ast::Scenario "Scenario: Only a test" (features/something.feature:3)>,
#=> #<Cucumber::Core::Ast::Step "Given : the fields" (features/something.feature:4)>
#=> ]
要访问Ast::Step
多行参数,请检查multiline_arg
。如果已指定数据表,则将返回Ast::DataTable
。否则,将返回Ast::EmptyMultilineArgument
。您可以通过调用data_table?
来检查返回的值是否为数据表。
作为示例,下面将遍历每个测试步骤并输出数据表(如果已定义:
)Before do |scenario|
scenario.test_steps.each do |test_step|
multiline_arg = test_step.source.last.multiline_arg
puts multiline_arg.raw if multiline_arg.data_table?
end
end