Maison > développement back-end > Golang > Comment imprimer les informations de débogage dans les tests Go à l'aide du package « testing » ?

Comment imprimer les informations de débogage dans les tests Go à l'aide du package « testing » ?

Barbara Streisand
Libérer: 2024-12-06 07:03:11
original
725 Les gens l'ont consulté

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

Comment imprimer les informations de débogage dans un test Go à l'aide du package "testing" ?

Lors de l'écriture de tests Go, il est parfois utile de imprimez les informations de débogage pour vous aider à comprendre le comportement de votre code. Cependant, l'impression sur la sortie standard à l'aide de fmt.Println() ne fonctionne pas dans les tests. En effet, la sortie du test est mise en mémoire tampon et imprimée uniquement si le test échoue.

Le package "testing" propose deux méthodes alternatives pour imprimer les informations de débogage :

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

Ces méthodes sont similaires à fmt.Print() et fmt.Printf(), mais ils écrivent leur sortie directement dans le journal de test. Pour activer la journalisation, vous devez spécifier l'indicateur -v (verbeux) lors de l'exécution de go test :

go test -v
Copier après la connexion

Cela imprimera tous les messages du journal sur la sortie standard, y compris ceux des tests réussis.

Voici un exemple d'utilisation de t.Log() et t.Logf() :

func TestPrintSomething(t *testing.T) {
    t.Log("Say hi")
    t.Logf("The value of myVar is %d", myVar)
}
Copier après la connexion

Lors de l'exécution de ce test avec -v, la sortie suivante sera imprimé :

=== RUN   TestPrintSomething
Say hi
The value of myVar is 1234
--- PASS: TestPrintSomething (0.00s)
Copier après la connexion

Vous pouvez également utiliser t.Error() pour imprimer un message d'erreur. Cela entraînera l'échec du test.

Voici un exemple d'utilisation de t.Error() :

func TestPrintSomething(t *testing.T) {
    if myVar != 1234 {
        t.Errorf("The value of myVar is %d, but it should be 1234", myVar)
    }
}
Copier après la connexion

Lors de l'exécution de ce test avec -v, la sortie suivante sera imprimé :

=== RUN   TestPrintSomething
The value of myVar is 4567, but it should be 1234
--- FAIL: TestPrintSomething (0.00s)
Copier après la connexion

Le package de tests fournit également un type testing.B pour les tests d'analyse comparative. Le type testing.B a une méthode Log() qui fonctionne comme t.Log().

Voici un exemple d'utilisation de B.Log() :

func BenchmarkSomething(b *testing.B) {
    for i := 0; i < b.N; i++ {
        // Do something
        b.Log("The value of i is", i)
    }
}
Copier après la connexion

Quand en exécutant ce benchmark avec go test -v, le résultat suivant sera imprimé :

=== 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
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal