Maison > développement back-end > Golang > le corps du texte

Comment capturer et inspecter les journaux dans les tests Go ?

Barbara Streisand
Libérer: 2024-11-21 02:18:11
original
317 Les gens l'ont consulté

How to Capture and Inspect Logs in Go Tests?

Capturer et inspecter les journaux dans les tests Go

Pour vérifier les journaux générés par une fonction testée, il est essentiel de les capturer et de les inspecter. Ceci peut être réalisé en redirigeant la sortie et en la comparant avec les valeurs attendues.

Dans l'exemple fourni, la fonction readByte imprime les messages du journal sur la sortie standard. Pour capturer ces messages dans le test, nous pouvons utiliser un bytes.Buffer comme indiqué ci-dessous :

package main

import (
    "bytes"
    "fmt"
    "io"
    "log"
    "os"
    "testing"
)

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

func TestReadByte(t *testing.T) {
    var buf bytes.Buffer
    log.SetOutput(&buf)
    defer func() {
        log.SetOutput(os.Stderr)
    }()
    readByte()
    t.Log(buf.String())
}
Copier après la connexion

Explication :

  • Le log.SetOutput( &buf) redirige la sortie du journal vers la variable buf.
  • La ligne defer log.SetOutput(os.Stderr) garantit que la sortie du journal est restaurée à sa destination d'origine après l'exécution du test.
  • La ligne t.Log(buf.String()) imprime les journaux capturés dans le journal de test.

En examinant le contenu de buf, vous pouvez vérifier si les journaux attendus ont été générés par la fonction readByte . Cette approche vous permet de tester la sortie du journal sans modifier le code de la fonction testée.

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