【问题标题】:Formatting console output from Test::Unit格式化来自 Test::Unit 的控制台输出
【发布时间】:2015-07-22 13:10:54
【问题描述】:
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;1m.[0m

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

跑步者:控制台 控制台选项: 输出级别:1 格式:文档 show_detail_immediately: 是的

【问题讨论】:

    标签: ruby webdriver testunit


    【解决方案1】:

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

    有三种处理方式:

    在输出流上将tty? 属性设置为false

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

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

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

    过滤掉转义序列

    我会选择:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-19
      • 2010-11-29
      • 1970-01-01
      • 2011-10-29
      • 2014-05-14
      • 2017-02-20
      • 1970-01-01
      • 2011-09-16
      相关资源
      最近更新 更多