我正在使用 cucumber 生成可以由工具或人类执行的测试脚本......所以不是标准用途。
但是,我想将场景和示例名称传递给我的输出。
这可能吗?
找到了..(在蒂姆·沃克的帮助下)
Before do |scenario|
puts "Before Scenario: #{scenario.to_sexp[2]}"
.
.
.
end
您的 SExpression 可能会有所不同,因此值得一试看看那scenario.to_sexp.inspect
棵树是什么。
Aslak 热衷于避免在他的类上暴露属性(这是我碰巧同意的决定,所以我很乐意解决这个问题)。
一个更严肃的答案(或者至少是建议):利用 ruby 的反射来尝试找到你正在寻找的东西。抓住可能的对象,找出他们有什么方法,看看你能不能找到它。例如:
File.open('happy_hunting.log','a') { |f|
f.print "Scenario supports: #{(scenario.methods - Object.methods).inspect}\n"
}
然后重复它以找出什么在哪里。
另一个建议,看源码。
我做了一些草率的事情。由于我仅将此信息用于调试,因此现在可以使用,直到我找到更好的东西。
@Before
public void printTestInfoBeforeScenario(Scenario scenario) {
LOGGER.info("Upcoming Test: "+scenario.getSourceTagNames());
}
@After
public void printTestInfoAfterScenario(Scenario scenario) {
LOGGER.info("Test Complete: " + scenario.getSourceTagNames() + " Status: " + scenario.getStatus());
}