使用Ruby / Watir在hooks文件中获取黄瓜数据表

时间:2017-02-13 13:10:59

标签: ruby automation cucumber integration watir

这是第一次,所以我会尝试最可读。我在一个功能文件中进行了测试,该文件使用数据表对某些数据进行排序,如下所示:

Current cucumber test example

目前我正在使用scenario.test_steps.map(&:name)来获取数组中的所有步骤(这是因为与应用程序生命周期软件管理器集成所必需的),这就是我得到的:

Cucumber steps got in the hooks file

我的问题是:是否有可能在钩子文件的前做|场景| 挂钩中获取数据信息?

提前感谢任何帮助过的人!

1 个答案:

答案 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