1

我想使用go testterratest库对具有约 10 个不同组件(pod、服务、负载均衡器、组件之间的链接等)的集群进行集成测试。用于构建基础设施的工具是terraformkuberneteshelm。建设基础设施大约需要。10 分钟,这样我就不想每次测试都单独做。我的解决方案建议使用在测试套件中设置测试基础设施的模式,TestMain(*testing.M)并在测试套件中对测试进行分组,例如TestAuth(*testing.T)TestMonitoring(*testing.T)等。现在,我需要调用terratest诸如terraform.InitAndApply(*testing.T, terraformOptions)测试套件之外的组件,这显然对我来说是不可能的.

我尝试了以下方法:

func TestMain(m *testing.M) {
    setupInfrastructure()
    rc = m.Run()
    teadDownInfrastructure()
    os.Exit(rc)
}

func setupInfrastructure() {
        terraformOptions := &terraform.Options{
            TerraformDir: testFolder,
            EnvVars: map[string]string{
                "TF_VAR_cluster_size":         3,
            },
        }
        terraform.InitAndApply(t, terraformOptions)   // <-- this is the problem
}

由于这是建立综合测试基础设施的自然方式,我错过了什么?

我看到所有terratest样本(https://github.com/gruntwork-io/terratest/tree/master/test)都使用一个测试套件、阶段和子测试,我不想这样做,因为它放弃了大部分的特征go testing。这真的是完成这项工作的唯一方法吗?

4

0 回答 0