Heim >Backend-Entwicklung >Golang >Wie drucke ich Debug-Informationen in Go-Tests mit dem Paket „testing'?
Wie drucke ich Debug-Informationen in einem Go-Test mit dem Paket „testing“?
Beim Schreiben von Go-Tests ist es manchmal nützlich Drucken Sie Debug-Informationen, um das Verhalten Ihres Codes besser zu verstehen. Allerdings funktioniert das Drucken auf die Standardausgabe mit fmt.Println() innerhalb von Tests nicht. Dies liegt daran, dass die Testausgabe gepuffert und nur gedruckt wird, wenn der Test fehlschlägt.
Das Paket „testing“ bietet zwei alternative Methoden zum Drucken von Debug-Informationen:
Diese Methoden ähneln fmt.Print() und fmt.Printf(), aber sie schreiben ihre Ausgabe direkt in das Testprotokoll. Um die Protokollierung zu aktivieren, müssen Sie beim Ausführen von go test das Flag -v (ausführlich) angeben:
go test -v
Dadurch werden alle Protokollmeldungen auf der Standardausgabe gedruckt, einschließlich der Meldungen erfolgreicher Tests.
Hier ist ein Beispiel für die Verwendung von t.Log() und t.Logf():
func TestPrintSomething(t *testing.T) { t.Log("Say hi") t.Logf("The value of myVar is %d", myVar) }
Wenn dieser Test mit -v ausgeführt wird, wird die folgende Ausgabe angezeigt gedruckt:
=== RUN TestPrintSomething Say hi The value of myVar is 1234 --- PASS: TestPrintSomething (0.00s)
Sie können auch t.Error() verwenden, um eine Fehlermeldung auszudrucken. Dies führt dazu, dass der Test fehlschlägt.
Hier ist ein Beispiel für die Verwendung von t.Error():
func TestPrintSomething(t *testing.T) { if myVar != 1234 { t.Errorf("The value of myVar is %d, but it should be 1234", myVar) } }
Wenn dieser Test mit -v ausgeführt wird, wird die folgende Ausgabe angezeigt gedruckt:
=== RUN TestPrintSomething The value of myVar is 4567, but it should be 1234 --- FAIL: TestPrintSomething (0.00s)
Das Testpaket bietet auch einen Testing.B-Typ für Benchmarking-Tests. Der Typ „testing.B“ verfügt über eine Log()-Methode, die wie t.Log() funktioniert.
Hier ist ein Beispiel für die Verwendung von B.Log():
func BenchmarkSomething(b *testing.B) { for i := 0; i < b.N; i++ { // Do something b.Log("The value of i is", i) } }
Wann Wenn Sie diesen Benchmark mit go test -v ausführen, wird die folgende Ausgabe gedruckt:
=== RUN BenchmarkSomething The value of i is 0 The value of i is 1 The value of i is 2 The value of i is 3 ... The value of i is 1000 --- BENCH: BenchmarkSomething 1000000000000000000/s
Das obige ist der detaillierte Inhalt vonWie drucke ich Debug-Informationen in Go-Tests mit dem Paket „testing'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!