Maison > développement back-end > Golang > Comment capturer et tester la sortie du journal dans les tests Go ?

Comment capturer et tester la sortie du journal dans les tests Go ?

Susan Sarandon
Libérer: 2024-11-15 02:25:02
original
229 Les gens l'ont consulté

How to Capture and Test Log Output in Go Tests?

Accès à la sortie du journal dans les tests Go

Dans Go, le package de journaux fournit un moyen pratique de consigner les messages. Cependant, lors de l'écriture de tests qui interagissent avec du code qui génère des messages de journal, tester ces messages peut devenir un défi.

Considérez la fonction suivante readByte qui enregistre une erreur lorsqu'elle est rencontrée :

func readByte(/*...*/) {
    // ...
    if err != nil {
        fmt.Println("ERROR")
        log.Print("Couldn't read first byte")
        return
    }
    // ...
}
Copier après la connexion

Dans un fichier de test correspondant, vous pouvez tenter de vérifier la sortie d'erreur en utilisant :

c.Assert(OUTPUT, check.Matches, "teste")
Copier après la connexion

Cependant, cette approche ne fonctionnera pas puisque la variable OUTPUT n'a pas accès au tampon de journal. Pour résoudre ce problème, vous pouvez utiliser une méthode pour capturer la sortie du journal pendant le test.

Capturer la sortie du journal

Une approche pour capturer la sortie du journal consiste à rediriger temporairement le sortie standard où le journal est imprimé. Ceci peut être réalisé via la fonction log.SetOutput, comme démontré dans l'exemple suivant :

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    // Update output to write to the buffer
    log.SetOutput(&buf)
    // Reset output to original after test
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    // Verify the buffer contains the expected log message
    t.Log(buf.String())
}
Copier après la connexion

L'exécution du test produira une sortie similaire à :

ERROR
Couldn't read first byte
Copier après la connexion

Cela montre comment vous peut accéder et vérifier efficacement la sortie des journaux dans vos tests Go, vous permettant de tester en profondeur le comportement du code qui génère des journaux.

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