着色golang测试运行输出

Ell*_*son 33 testing go

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

Mak*_*poc 56

您可以为此创建包装器shell脚本,并使用颜色转义序列为其着色.这是一个关于Linux的简单示例(我不确定这会在Windows上看起来如何,但我想有一种方法.. :))

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

  • 如果有人在 Makefile 中使用此命令,请将 $ 替换为 $$ 以使其正常工作。 (5认同)
  • 请注意,此解决方案会丢失“ go test”的退出代码,这反过来意味着,如果在某些CI环境中使用该命令,则即使有失败的测试,构建也不会失败!使用bash时,一种解决方法是使用`pipefail`。 (2认同)

Ale*_*ubo 47

您可以使用通用着色剂grc来着色任何颜色.

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

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

mkdir ~/.grc
Run Code Online (Sandbox Code Playgroud)

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

# Go
\bgo.* test\b
conf.gotest
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

现在您可以运行Go测试:

grc go test -v ./..
Run Code Online (Sandbox Code Playgroud)

样本输出:

截图

为了避免打字grc的时候,添加一个别名到你的shell(如果使用bash,无论是~/.bashrc~/.bash_profile或两者兼而有之,这取决于您的操作系统):

alias go=grc go
Run Code Online (Sandbox Code Playgroud)

现在只需运行以下命令即可获得颜色:

go test -v ./..
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案。奇迹般有效。 (2认同)
  • 在 mac os 上,使用 zsh 和 grc 1.11.1,我不得不将 grc.conf 移动到 /usr/local/etc/grc.conf(conf.gotest 保持原样)并将其添加到 .zshrc `[[ -s " /usr/local/etc/grc.zsh" ]] && source /usr/local/etc/grc.zsh` (2认同)

Ale*_*ubo 11

还有一个名为richgo的工具,以用户友好的方式完成这项工作.

在此输入图像描述