格式化来自 Test::Unit 的控制台输出
Formatting console output from Test::Unit
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: 真
[32;1m
并且通常任何 [((\d+);?)m
都是颜色转义序列。它们突出显示控制台中的输出。 [32;1m.[0m
字面上是一个绿点,表示测试执行成功。
三种处理方式:
在输出流上将 tty?
属性设置为 false
这将成为一个完美的日志文件,但您将失去控制台本身的任何颜色突出显示。
控制台和文件使用不同的编写器
这是一个漫长的过程,似乎对你的方法来说有点矫枉过正。
过滤掉转义序列
我会选择:
$out_file.write string.gsub /\[[\d;]+m/, ''
上面的内容会过滤掉所有废话,你会在你的文件中得到普通的老式文本。
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: 真
[32;1m
并且通常任何 [((\d+);?)m
都是颜色转义序列。它们突出显示控制台中的输出。 [32;1m.[0m
字面上是一个绿点,表示测试执行成功。
三种处理方式:
在输出流上将 tty?
属性设置为 false
这将成为一个完美的日志文件,但您将失去控制台本身的任何颜色突出显示。
控制台和文件使用不同的编写器
这是一个漫长的过程,似乎对你的方法来说有点矫枉过正。
过滤掉转义序列
我会选择:
$out_file.write string.gsub /\[[\d;]+m/, ''
上面的内容会过滤掉所有废话,你会在你的文件中得到普通的老式文本。