首頁 > 後端開發 > Golang > 如何在 Go 測試中擷取和檢查日誌?

如何在 Go 測試中擷取和檢查日誌?

Barbara Streisand
發布: 2024-11-21 02:18:11
原創
376 人瀏覽過

How to Capture and Inspect Logs in Go Tests?

在 Go 測試中捕獲和檢查日誌

要驗證被測函數產生的日誌,捕獲和檢查日誌至關重要。這可以透過重定向輸出並將其與預期值進行比較來實現。

在提供的範例中,readByte 函數將日誌訊息列印到標準輸出。要在測試中捕獲這些訊息,我們可以使用bytes.Buffer ,如下所示:

package main

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "os"
    "testing"
)

func readByte(/*...*/) {
    // ...
    if err != nil {
        fmt.Println("ERROR")
        log.Print("Couldn't read first byte")
        return
    }
    // ...
}

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    log.SetOutput(&buf)
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    t.Log(buf.String())
}
登入後複製

說明:

  • log.Set ) 行將日誌輸出重新導向到buf 變數。
  • defer log.SetOutput(os.Stderr) 確保測試運行後日誌輸出恢復到原始目的地。
  • t.Log(buf.String()) 行將捕獲的日誌列印到測試日誌.

透過檢查buf 的內容,您可以驗證readByte 函數是否產生了預期的紀錄.這種方法可讓您測試日誌輸出,而無需修改被測函數的程式碼。

以上是如何在 Go 測試中擷取和檢查日誌?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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