Heim > Backend-Entwicklung > Golang > Wie erfasst und überprüft man Protokolle in Go-Tests?

Wie erfasst und überprüft man Protokolle in Go-Tests?

Barbara Streisand
Freigeben: 2024-11-21 02:18:11
Original
387 Leute haben es durchsucht

How to Capture and Inspect Logs in Go Tests?

Erfassen und Überprüfen von Protokollen in Go-Tests

Um die von einer zu testenden Funktion generierten Protokolle zu überprüfen, ist es wichtig, sie zu erfassen und zu überprüfen. Dies kann erreicht werden, indem die Ausgabe umgeleitet und mit den erwarteten Werten verglichen wird.

Im bereitgestellten Beispiel druckt die readByte-Funktion die Protokollmeldungen auf die Standardausgabe. Um diese Nachrichten im Test zu erfassen, können wir einen bytes.Buffer wie unten gezeigt verwenden:

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())
}
Nach dem Login kopieren

Erklärung:

  • The log.SetOutput( &buf) leitet die Protokollausgabe an die buf-Variable um.
  • Die Verzögerung log.SetOutput(os.Stderr) sorgt dafür dass die Protokollausgabe nach den Testläufen an ihrem ursprünglichen Ziel wiederhergestellt wird.
  • Die Zeile t.Log(buf.String()) druckt die erfassten Protokolle im Testprotokoll.

Indem Sie den Inhalt von buf untersuchen, können Sie überprüfen, ob die erwarteten Protokolle von der readByte-Funktion generiert wurden. Mit diesem Ansatz können Sie die Protokollausgabe testen, ohne den Code der zu testenden Funktion zu ändern.

Das obige ist der detaillierte Inhalt vonWie erfasst und überprüft man Protokolle in Go-Tests?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage