慕码人2483693
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 testgo test -args -spaces-key="KEY" -spaces-secret="S3CR3T"如果你想通过ENV VAR,那么你之前的做法是正确的:SCOREKEEPER_SPACES_KEY="key" SCOREKEEPER_SPACES_SECRET="s3cr3t" go test