Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menangkap dan Menguji Output Log dalam Go Tests?

Bagaimana untuk Menangkap dan Menguji Output Log dalam Go Tests?

Susan Sarandon
Lepaskan: 2024-11-15 02:25:02
asal
236 orang telah melayarinya

How to Capture and Test Log Output in Go Tests?

Mengakses Output Log dalam Go Tests

Dalam Go, pakej log menyediakan cara yang mudah untuk log mesej. Walau bagaimanapun, apabila menulis ujian yang berinteraksi dengan kod yang menjana mesej log, menguji mesej ini boleh menjadi satu cabaran.

Pertimbangkan fungsi readByte berikut yang mencatat ralat apabila ditemui:

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

Dalam fail ujian yang sepadan, anda boleh cuba mengesahkan output ralat menggunakan:

c.Assert(OUTPUT, check.Matches, "teste")
Salin selepas log masuk

Walau bagaimanapun, pendekatan ini tidak akan berfungsi kerana pembolehubah OUTPUT tidak mempunyai akses kepada penimbal log. Untuk menyelesaikan masalah ini, anda boleh menggunakan kaedah untuk menangkap output log semasa ujian.

Menangkap Output Log

Satu pendekatan untuk menangkap output log ialah mengubah hala sementara output standard di mana log dicetak. Ini boleh dicapai melalui fungsi log.SetOutput, seperti yang ditunjukkan dalam contoh berikut:

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())
}
Salin selepas log masuk

Menjalankan ujian akan menghasilkan output yang serupa dengan:

ERROR
Couldn't read first byte
Salin selepas log masuk

Ini menunjukkan cara anda boleh mengakses dan mengesahkan output log dengan berkesan dalam ujian Go anda, membolehkan anda menguji secara menyeluruh kelakuan kod yang menjana log.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap dan Menguji Output Log dalam Go Tests?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan