Heim > Backend-Entwicklung > Golang > Wie drucke ich Debug-Informationen in Go-Tests mit dem Paket „testing'?

Wie drucke ich Debug-Informationen in Go-Tests mit dem Paket „testing'?

Barbara Streisand
Freigeben: 2024-12-06 07:03:11
Original
688 Leute haben es durchsucht

How to Print Debug Information in Go Tests Using the `testing` Package?

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:

  • t.Log()
  • t.Logf()

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

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

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

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

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

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

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

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!

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