Wie teste ich die Ausgabe von Funktionen, die die Protokollierung in Go verwenden?

Patricia Arquette
Freigeben: 2024-11-22 08:18:12
Original
407 Leute haben es durchsucht

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

So testen Sie die Ausgabe von Funktionen, die Protokollierung in Go-Tests verwenden

Beim Testen einer Funktion, die Protokollierungsmechanismen wie fmt.Println( ) oder log.Print() wird es notwendig, auf die von diesen Funktionen innerhalb des Tests generierte Ausgabe zuzugreifen.

Um dies zu erreichen, können Sie diese befolgen Schritte:

Verwenden Sie in Ihrer Testdatei, wie etwa readbyte_test.go, bytes.Buffer und log.SetOutput(), um die Ausgabe der Protokollierungsfunktionen in einen Puffer umzuleiten:

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

Denken Sie daran, die Protokollausgabe in einer Verzögerungsfunktion in os.Stderr wiederherzustellen, um mögliche Interferenzen mit anderen Tests oder nachfolgendem Code zu vermeiden.

Durch Aufruf readByte() und anschließendes Protokollieren des Pufferinhalts mit t.Log() können Sie die tatsächliche Ausgabe untersuchen, die von der zu testenden Funktion generiert wird. Mit dieser Technik können Sie die erwarteten Fehlermeldungen oder andere protokollierte Informationen überprüfen, ohne den Code der Funktion selbst zu ändern.

Das obige ist der detaillierte Inhalt vonWie teste ich die Ausgabe von Funktionen, die die Protokollierung in Go verwenden?. 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