当迭代通过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
感谢您的答复@Justin柯。我完全按照你的说法复制和粘贴,但没有工作,所以我使用'begin rescue'模块进行了一些更改,并且_voilá_工作正常! –