当前位置: 首页 > 面试题库 >

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

宁卓
2023-03-14
问题内容

如何在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())

}

问题答案:

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



 类似资料:
  • 问题内容: 从文档中的示例来看,似乎不应该有任何输出 但是,当我在python shell中尝试时,列表会被打印出来。我想知道这是否是默认行为,以及如何抑制的输出。 问题答案: 这是按清洁度递减的顺序 抑制 输出的方法。他们假设您使用的是Python 3。 您可以重定向到特殊目标。 import subprocess subprocess.run([‘ls’, ‘-l’], stdout=subp

  • null 通过函数注入到正在进行db操作的方法中进行monkey修补,并在测试中更改此函数 通过使sql全局化来更改猴子补丁-我不太喜欢 使数据库在测试时间内不允许删除操作 上面的每个选项似乎都不理想,我应该如何编写这个测试用例?

  • 问题是在Spring boot测试中没有捕获到应用程序事件,而在应用程序项目中侦听事件的文件可以很好地工作。

  • 问题内容: 我想检查代码是否正在运行,以便可以进行一些配置。 有功能吗?喜欢: runtime.IsBeingTested() 问题答案: 只需指定您在test的中运行测试即可。例如,在pkg.go中: 在pkg_test.go中: 该技术不仅可以与s 一起使用,还可以与任何数据或函数一起使用。如果您的软件包中有一些变量(在您的情况下为配置变量),则可以在中将其覆盖。

  • 问题内容: 我有以下代码: 我想为此编写测试,但不确定如何使用httptest包。 问题答案: 在这里看看: https://golang.org/pkg/net/http/httptest/#example_Server 基本上,您可以使用函数创建一个新的“模拟” http服务器。 您可以让模拟服务器返回测试所需的任何响应,还可以让模拟服务器存储函数发出的请求以对其进行断言。