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()) }
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!