如何在Go测试中捕获或抑制stdout?
我正在努力教自己去(郎)测试.在下面的代码中,myshow.LoadPath向stdout打印了大量信息(这是一种正常的副作用).但是,当我运行"go test"时,它会产生非常嘈杂的输出吗?有没有办法来抑制或捕获标准输出?
为了比较,我正在考虑来自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())
}
Run Code Online (Sandbox Code Playgroud) 我有这样的功能:
package main
import (
"fmt"
)
// PrintSomething prints some thing
func PrintSomething() {
fmt.Println("print something")
}
func main() {
PrintSomething()
}
Run Code Online (Sandbox Code Playgroud)
如何将PrintSomething包装到另一个函数调用CaptureSomething以将字符串"print something"保存到变量并返回它?