當終端/控制檯測試運行時,我喜歡它實際上以紅色或綠色文本顯示它們的輸出。 Go似乎有很多可用的測試庫。不過,我想只使用Go附帶的默認測試包。有沒有辦法使用紅色和綠色對輸出進行着色?着色golang測試運行輸出
回答
您可以爲此創建包裝器外殼腳本,並使用顏色轉義序列爲其着色。下面是在Linux上一個簡單的例子(我不知道這將如何看待窗口,但我想有一種方法.. :))
go test -v . | sed ''/PASS/s//$(printf "\033[32mPASS\033[0m")/'' | sed ''/FAIL/s//$(printf "\033[31mFAIL\033[0m")/''
你仍然需要一個庫添色換碼,如:
- 對於Windows:
mattn/go-colorable
或shiena/ansicolor
- 在Unix或Windows:
fatih/color
或kortschak/ct
- 在Unix或Windows:
logrusorgru/aurora
(通過Ivan Black提及the comments)
從那裏,指定要着色的內容(StdOut或StdErr,如in this example)
目前'kortschak/ct'不支持Windows。 – 2015-09-22 16:17:41
對於Unix和Win10 +,還有[github.com/logrusorgru/aurora](https://github.com/logrusorgru/aurora),它支持Printf/Sprintf格式。例如'fmt.Printf(「value%d」,Red(3))' – 2016-11-07 00:31:35
@IvanBlack謝謝你。我已將您的鏈接添加到答案以獲得更多的可見性。 – VonC 2016-11-07 09:35:21
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。
您可以使用通用着色器grc來着色任何東西。在Debian/Ubuntu上安裝apt-get install grc
。在Mac上,brew install grc
。
在你的home目錄創建一個config目錄:
mkdir ~/.grc
然後在~/.grc/grc.conf
創建個人GRC配置:
# Go
\bgo.* test\b
conf.gotest
在~/.grc/conf.gotest
然後創建一個圍棋測試colourization配置,如:
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
現在,您只需通過運行得到colourization:
go test -v ./..
還有一個叫richgo的工具,正是這一點,在一個用戶友好的方式。
- 1. 着色Django測試的輸出
- 2. Jenkins上的行爲測試運行器沒有彩色輸出
- 3. 在heroku上運行golang測試
- 4. 着色ifort輸出
- 5. 着色PyLint輸出?
- 6. 在Golang測試Elasticsearch睡不着覺
- 7. 當使用「堆棧測試」時,我的hspec測試輸出沒有着色
- 8. 着色/高亮導軌3'耙測試'輸出
- 9. 你怎麼測試golang命令行輸出
- 10. 爲什麼測試沒有運行? (Golang) - goapp測試 - bug?
- 11. 在ReSharper測試運行器上顯示測試輸出合格
- 12. 重新運行測試時刪除過期的測試輸出
- 13. 運行GWT 2.4測試隨着JUnitCore
- 14. 如何在運行時着色shell輸出
- 15. Java:Windows中的着色輸出
- 16. 業力不運行我的腳本測試沿着JavaScript測試
- 17. 沒有測試運行列出'測試運行'
- 18. 如何並行運行測試,但得到整齊有序的測試輸出?
- 19. 單元測試 - 運行輸入和輸出
- 20. Golang單元測試用戶輸入
- 21. 測試輸出
- 22. 無法測試Golang CLI工具的輸出
- 23. 測試着色器的兼容性
- 24. Golang MongoDb GridFs測試
- 25. Golang測試函數
- 26. 測試與在golang
- 27. Golang的API測試
- 28. 噶測試運行的垃圾郵件輸出,當一個測試失敗
- 29. 嘗試運行JUnit測試運行器時出錯
- 30. 如何從dev_appserver自動編譯後運行golang測試
這是一個很好的輕量級解決方案。我沒有想到只是將輸出管道輸送到sed。有用。謝謝。 – 2014-12-02 22:33:12
謝謝!我添加了-cover參數並將其添加爲別名。所以每次我想運行所有的測試,我只是運行'got' – IvRRimUm 2016-12-14 18:33:14