首頁 > 後端開發 > Golang > 主體

如何測試 Go 中使用日誌記錄的函數的輸出?

Patricia Arquette
發布: 2024-11-22 08:18:12
原創
407 人瀏覽過

How to Test Output from Functions that Use Logging in Go?

如何在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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板