着色golang测试运行输出

时间:2014-12-02 05:43:11

标签: testing go

我喜欢终端/控制台测试运行实际显示红色或绿色文本的输出。看起来很多可用于Go的测试库都有这个。但是,我想使用Go附带的默认测试包。有没有办法用红色和绿色为它的输出着色?

7 个答案:

答案 0 :(得分:46)

您可以为此创建包装器shell脚本,并使用颜色转义序列为其着色。这是Linux上的一个简单示例(我不确定它在Windows上会有什么样子,但我想有办法...... :))

go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''

答案 1 :(得分:43)

您可以使用grc(一种通用的着色剂)来对任何颜色进行着色

在Debian / Ubuntu上,使用apt-get install grc安装。在Mac上,brew install grc

在主目录中创建一个config目录:

mkdir ~/.grc

然后在~/.grc/grc.conf中创建您的个人grc配置:

# Go
\bgo.* test\b
conf.gotest

然后在~/.grc/conf.gotest中创建一个Go测试着色配置,例如:

regexp==== RUN .*
colour=blue
-
regexp=--- PASS: .*
colour=green
-
regexp=^PASS$
colour=green
-
regexp=^(ok|\?) .*
colour=magenta
-
regexp=--- FAIL: .*
colour=red
-
regexp=[^\s]+\.go(:\d+)?
colour=cyan

现在您可以使用以下命令运行Go测试:

grc go test -v ./..

示例输出:

screenshot

为避免一直输入grc,请在shell中添加别名(如果使用Bash,~/.bashrc~/.bash_profile或两者,具体取决于您的操作系统):

alias go=grc go

现在只需运行:

即可获得色彩
go test -v ./..

答案 2 :(得分:10)

还有一个名为richgo的工具以用户友好的方式完成此任务。

enter image description here

答案 3 :(得分:4)

你仍然需要一个库来添加颜色转义码,如:

从那里,您可以指定要着色的内容(StdOut或StdErr,如in this example

答案 4 :(得分:2)

BoltDB有一些看起来像这样的测试方法:

func assert(tb testing.TB, condition bool, msg string, v ...interface{}) {
    if !condition {
        _, file, line, _ := runtime.Caller(1)
        fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...)
        tb.FailNow()
    }
}

Here are the rest。我添加了绿点here

答案 5 :(得分:2)

rakyll/gotestscreenshot)是执行此操作的二进制文件。

示例:

$ gotest -v github.com/rakyll/hey

答案 6 :(得分:0)

表情符号

您可以使用文本中的颜色作为答案中提到的其他颜色,以使彩色文本具有颜色代码或使用第三方库。

但是您可以改用表情符号!例如,您可以将⚠️用于警告消息,将?用于错误消息。

或者只是将这些笔记本用作颜色:

?: error message
?: warning message
?: ok status message
?: action message
?: canceled status message
?: Or anything you like and want to recognize immediately by color

?奖励:

此方法还可以帮助您快速直接在源代码中直接扫描并查找日志

但是Linux的默认表情符号字体的某些发行版在默认情况下不是彩色的,您可能首先要使其彩色。