为了账号安全,请及时绑定邮箱和手机立即绑定

我怎么知道我在“去测试”中跑步

我怎么知道我在“去测试”中跑步

Go
ABOUTYOU 2021-05-05 13:16:46
当我运行“go test”时,我想使用不同的配置文件。我如何知道我的代码是在测试上下文还是正常上下文中运行?是否需要检查某种环境变量?
查看完整描述

3 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

测试包在加载时会修改全局环境:它注册了许多命令行标志。因此,我们可以检查这些标志是否已注册:


func init() {

    if flag.Lookup("test.v") == nil {

        fmt.Println("normal run")

    } else {

        fmt.Println("run under go test")

    }

}


查看完整回答
反对 回复 2021-05-31
?
当年话下

TA贡献1890条经验 获得超9个赞

由于该flag.Lookup("test.v")方法对我不起作用,因此我想分享自己的解决方案:

strings.HasSuffix(os.Args[0], ".test")

或者

strings.Contains(os.Args[0], "/_test/")

两者似乎都起作用。


查看完整回答
反对 回复 2021-05-31
?
白衣非少年

TA贡献1155条经验 获得超0个赞

代码示例将有所帮助。但是从您的问题看来,当您可能想将其传递时,听起来好像您已在某处对配置文件的路径进行了硬编码。

更改要测试的功能以使用定义配置文件的参数,然后在测试代码中传递与在非测试代码中使用的路径不同的路径。在测试和生产时,代码具有不同的路径是不好的做法。


查看完整回答
反对 回复 2021-05-31
  • 3 回答
  • 0 关注
  • 380 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信