如何并行运行需要不同环境变量值的测试

我有一个 Go 应用程序,应用程序在启动时读取环境变量。应用程序使用环境变量的值来配置自身。

现在,根据环境变量的值之一,应用程序的设置与同一环境变量的其他值不同。

我想在单元测试中测试这两个设置。我还想并行运行这些测试。我可以在一个测试中使用设置环境变量值os.Setenv(),但这也会影响并行运行的另一个测试,该测试试图为同一环境变量设置不同的值。

在这种情况下,最佳做法是什么?我们如何设置不影响单元测试的环境变量值。


料青山看我应如是
浏览 112回答 1
1回答

慕容3067478

不要在测试中使用环境变量。相反,将配置传递到您测试的函数中。在正常启动期间,从环境中读取该配置,但在测试期间,直接将其传入。例子:你的代码:func main() {    envFoo := os.Getenv("FOO")    if err := someFunc(envFoo); err != nil {        log.Fatal(err)    }}func someFunc(confValue string) error {    // do stuff}您的测试:func TestSomeFunc(t *testing.T) {    err := someFunc("test config value")    // assert things}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go