Watir-Webdriver:使声明不会实时打印到哈德森控制台

时间:2011-11-08 00:28:29

标签: ruby hudson jenkins watir watir-webdriver

我正在使用watir-webdriver [ruby]运行一些测试,在这些测试中我添加了几个put语句,这些语句将打印到控制台。在终端/命令提示符下运行时,消息会立即打印到控制台。

但是当我从Hudson运行相同的测试时,打印不会实时发生。相反,它将等到作业完成,最后它将一次性转储所有打印件。

这样,我无法检查我的测试是否正常运行以及它们的实时状态。

对此有什么解决方案吗?

由于 Sudhi

更新:

亚当 这确实对我有用。我的代码片段看起来像这样。

stdout.sync = true 
class TC_MyTest < Test::Unit::TestCase 
$stdout.sync = true 
  def test_sample 
  $i=0 
  @@log.debug "Running the scenario = "+@@SCENARIO 
  puts "Running the scenario = "+@@SCENARIO 
     while $i<@@LOOPCOUNT 
       @@log.debug "Running the loop # "+$i.to_s 
       puts "Running the loop # "+$i.to_s 
       # Clean up the system 
       killOldProcesses() 
     end 
  end 
end

1 个答案:

答案 0 :(得分:1)

此语句禁止缓冲文本以便立即显示 - 将其放在脚本的顶部(对于Cucumber,我将它放在支持目录中的文件顶部):

$stdout.sync = true

您使用的是其他任何框架/宝石吗?我有一个问题,Jenkins没有实时显示Cucumber脚本中的puts语句。解决方案是将这些put语句移动到我的Page Object pages而不是步骤文件(功能 - &gt;步骤 - &gt;页面)。

使用这两个约定,我可以根据需要实时获得Jenkins输出。