如何在Go 測試中測試使用日誌記錄的函數的輸出
測試使用fmt.Println( 等日誌機制的函數時)或log.Print(),則有必要存取測試中這些函數產生的輸出。
To要實現這一點,您可以按照以下步驟操作:
在您的測試檔案(例如readbyte_test.go)中,使用bytes.Buffer 和log.SetOutput() 將日誌記錄函數的輸出重新導向到緩衝區:
import ( "bytes" "log" "os" "testing" ) func TestReadByte(t *testing.T) { var buf bytes.Buffer log.SetOutput(&buf) defer func() { log.SetOutput(os.Stderr) }() readByte() t.Log(buf.String()) }
請記得在defer 函數中將日誌輸出還原到os.Stderr 以避免對其他測試或後續測試產生任何潛在幹擾code.
透過呼叫readByte(),然後使用t.Log() 記錄緩衝區的內容,您可以檢查被測試函數產生的實際輸出。這種技術可讓您驗證預期的錯誤訊息或任何其他記錄的信息,而無需修改函數的程式碼本身。
以上是如何測試 Go 中使用日誌記錄的函數的輸出?的詳細內容。更多資訊請關注PHP中文網其他相關文章!