Heim > Backend-Entwicklung > Golang > Wie erfasst und testet man die Protokollausgabe in Go-Tests?

Wie erfasst und testet man die Protokollausgabe in Go-Tests?

Susan Sarandon
Freigeben: 2024-11-15 02:25:02
Original
229 Leute haben es durchsucht

How to Capture and Test Log Output in Go Tests?

Zugriff auf die Protokollausgabe in Go-Tests

In Go bietet das Protokollpaket eine praktische Möglichkeit, Nachrichten zu protokollieren. Wenn Sie jedoch Tests schreiben, die mit Code interagieren, der Protokollnachrichten generiert, kann das Testen dieser Nachrichten zu einer Herausforderung werden.

Bedenken Sie die folgende Funktion readByte, die einen Fehler protokolliert, wenn sie auftritt:

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

In Wenn Sie eine entsprechende Testdatei haben, können Sie versuchen, die Fehlerausgabe zu überprüfen, indem Sie Folgendes verwenden:

c.Assert(OUTPUT, check.Matches, "teste")
Nach dem Login kopieren

Dieser Ansatz funktioniert jedoch nicht, da die Variable OUTPUT nicht vorhanden ist Zugriff auf den Protokollpuffer. Um dieses Problem zu beheben, können Sie eine Methode zum Erfassen der Protokollausgabe während des Tests verwenden.

Erfassen der Protokollausgabe

Ein Ansatz zum Erfassen der Protokollausgabe besteht darin, die Protokollausgabe vorübergehend umzuleiten Standardausgabe, wo das Protokoll gedruckt wird. Dies kann durch die Funktion log.SetOutput erreicht werden, wie im folgenden Beispiel gezeigt:

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    // Update output to write to the buffer
    log.SetOutput(&buf)
    // Reset output to original after test
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    // Verify the buffer contains the expected log message
    t.Log(buf.String())
}
Nach dem Login kopieren

Das Ausführen des Tests erzeugt eine Ausgabe ähnlich der folgenden:

ERROR
Couldn't read first byte
Nach dem Login kopieren

Dies zeigt, wie Sie können innerhalb Ihrer Go-Tests effektiv auf die Protokollausgabe zugreifen und diese überprüfen, sodass Sie das Verhalten des Codes, der Protokolle generiert, gründlich testen können.

Das obige ist der detaillierte Inhalt vonWie erfasst und testet man die Protokollausgabe 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