1 回答
TA贡献1860条经验 获得超9个赞
go 1.17刚刚添加了通过 T.Setenv 在测试期间更改环境变量的功能。
从文档中:
T.Setenv calls os.Setenv(键,值)并在测试后使用“清理”将环境变量还原到其原始值。
这不能用于并行测试。
用法示例:
func getCreds() (u, p string) {
u, p = os.Getenv("USER"), os.Getenv("PASS")
return
}
func TestEnv(t *testing.T) {
t.Setenv("USER", "xxx")
t.Setenv("PASS", "yyy")
u, p := getCreds()
t.Logf("creds: %q / %q", u, p) // will get local testing env settings
}
func TestNoEnv(t *testing.T) {
u, p := getCreds()
t.Logf("creds: %q / %q", u, p) // will get nothing
}
https://play.golang.org/p/QBl3hV6WjWA
编辑:从评论中可以看出,您的(或DigialOcean)的测试函数使用命令行选项(如果您在问题中共享一些测试代码,可能会有所帮助)。无论如何,如果是这种情况,调用和传递参数的正确方法是这样的:FlagSetgo test
go test -args -spaces-key="KEY" -spaces-secret="S3CR3T"
如果你想通过ENV VAR,那么你之前的做法是正确的:
SCOREKEEPER_SPACES_KEY="key" SCOREKEEPER_SPACES_SECRET="s3cr3t" go test
- 1 回答
- 0 关注
- 71 浏览
添加回答
举报