格式化Test :: Unit的控制台输出

时间:2015-07-22 13:10:54

标签: ruby webdriver testunit

require "json"
require "selenium-webdriver"
gem "test-unit"
require "test/unit"

class Tests < Test::Unit::TestCase

$out_file = File.new('log.txt', 'w')

def $stdout.write string
  $out_file.write string
  super
end

当我使用上面的代码时,控制台中的输出看起来很棒,但是当它完成后,它会将所有内容转储到我的日志文件中(就像我期望的那样)但是日志文件中的格式会出现奇怪的额外字符。结束。下面的前两行是预期的,但第三行是???

首次运行 - 主要:1.998

首战 - 演练:16.527

[32;1米[0米

我一直在寻找一些选项而且我已经尝试配置test-unit.yml文件摆弄下面的格式选项,但无论我尝试什么都没有改变输出的格式

亚军:控制台 console_options:   output_level:1   格式:文档   show_detail_immediately:true

1 个答案:

答案 0 :(得分:1)

[32;1m并且通常任何[((\d+);?)m都是颜色转义序列。它们突出显示控制台中的输出。 [32;1m.[0m字面上是绿点,表示测试执行成功。

有三种方法可以处理它们:

在输出流

上将tty?属性设置为false

这将创建一个完美的日志文件,但您将在控制台本身中丢失任何颜色突出显示。

为控制台和文件使用不同的编写器

这是一个漫长的过程,似乎对你的方法来说太过分了。

过滤掉转义序列

我会选择:

$out_file.write string.gsub /\[[\d;]+m/, ''

以上内容将过滤掉任何废话,您将在文件中获得普通的老式文本。