9

我正在使用 cucumber 生成可以由工具或人类执行的测试脚本......所以不是标准用途。

但是,我想将场景和示例名称传递给我的输出。

这可能吗?

4

3 回答 3

8

找到了..(在蒂姆·沃克的帮助下)

Before do |scenario|
 puts "Before Scenario: #{scenario.to_sexp[2]}"
 .
 .
 .
end

您的 SExpression 可能会有所不同,因此值得一试看看那scenario.to_sexp.inspect棵树是什么。

Aslak 热衷于避免在他的类上暴露属性(这是我碰巧同意的决定,所以我很乐意解决这个问题)。

于 2009-03-21T12:18:47.260 回答
2

一个更严肃的答案(或者至少是建议):利用 ruby​​ 的反射来尝试找到你正在寻找的东西。抓住可能的对象,找出他们有什么方法,看看你能不能找到它。例如:

File.open('happy_hunting.log','a') { |f|
    f.print "Scenario supports: #{(scenario.methods - Object.methods).inspect}\n"
    }

然后重复它以找出什么在哪里。

另一个建议,看源码。

于 2009-03-20T06:26:14.510 回答
0

我做了一些草率的事情。由于我仅将此信息用于调试,因此现在可以使用,直到我找到更好的东西。

@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());
}
于 2014-04-22T09:17:33.040 回答