我喜欢终端/控制台测试运行实际显示红色或绿色文本的输出。看起来很多可用于Go的测试库都有这个。但是,我想使用Go附带的默认测试包。有没有办法用红色和绿色为它的输出着色?
答案 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 ./..
示例输出:
为避免一直输入grc
,请在shell中添加别名(如果使用Bash,~/.bashrc
或~/.bash_profile
或两者,具体取决于您的操作系统):
alias go=grc go
现在只需运行:
即可获得色彩go test -v ./..
答案 2 :(得分:10)
还有一个名为richgo的工具以用户友好的方式完成此任务。
答案 3 :(得分:4)
你仍然需要一个库来添加颜色转义码,如:
mattn/go-colorable
或shiena/ansicolor
fatih/color
或kortschak/ct
logrusorgru/aurora
(由Ivan Black中的the comments提及)从那里,您可以指定要着色的内容(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)
答案 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的默认表情符号字体的某些发行版在默认情况下不是彩色的,您可能首先要使其彩色。