一尘不染

如何在Go(lang)测试中捕获或抑制stdout?

go

如何在Go测试中捕获或抑制stdout?

我正在尝试自学go(lang)测试。在下面的代码中,myshow.LoadPath将大量信息输出到stdout(这是正常的副作用)。但是,当我运行“ go
test”时,确实会产生非常嘈杂的输出。有没有办法抑制或捕获stdout?

为了进行比较,我正在考虑python世界中的类似问题。http://pytest.org/latest/capture.html#captures

package slideshow_test

import (
    "os"
    "testing"

    "github.com/golliher/go-hpf/slideshow"
)

func setupTest() {
    myshow := slideshow.Slideshow{Name: "This is my show"}
    myshow.LoadPath("..")

}

func TestStub(t *testing.T) {
    if true == false {
        t.Fail()
    }
}

func TestMain(m *testing.M) {
    setupTest()
    os.Exit(m.Run())

}

阅读 219

收藏
2020-07-02

共1个答案

一尘不染

os.Stdout``fmt.Printf和其他人使用的只是一个变量。因此,您可以随时覆盖它,并在必要时将其还原。https://golang.org/pkg/os/#pkg-
variables

2020-07-02