相关疑难解决方法(0)

在Go中,如何将函数的stdout捕获到字符串中?

例如,在Python中,我可以执行以下操作:

realout = sys.stdout
sys.stdout = StringIO.StringIO()
some_function() # prints to stdout get captured in the StringIO object
result = sys.stdout.getvalue()
sys.stdout = realout
Run Code Online (Sandbox Code Playgroud)

你能在Go中这样做吗?

stdout go

44
推荐指数
3
解决办法
3万
查看次数

如何在Go单元测试中测试函数的输出(stdout/stderr)

我有一个我想测试的简单函数:

func (t *Thing) print(min_verbosity int, message string) {
    if t.verbosity >= minv {
        fmt.Print(message)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如何测试函数实际发送到标准输出的内容?Test :: Output在Perl中做了我想要的.我知道我可以写我自己的样板做同样的围棋(如描述这里):

orig = os.Stdout
r,w,_ = os.Pipe()
thing.print("Some message")
var buf bytes.Buffer
io.Copy(&buf, r)
w.Close()
os.Stdout = orig
if(buf.String() != "Some message") {
    t.Error("Failure!")
}
Run Code Online (Sandbox Code Playgroud)

但是对于每一项测试来说,这都是额外的工作.我希望有更标准的方法,或者可能是一个抽象库来处理这个问题.

testing stdout go

17
推荐指数
2
解决办法
1万
查看次数

标签 统计

go ×2

stdout ×2

testing ×1