关于 run-acceptance-tests
用于安全运行和诊断 Go 编写的 Terraform Provider 验收测试的技能,说明凭据检查、测试环境变量、调试方法,以及创建真实基础设施后的清理注意事项。
主要功能
- 01运行指定的 TestAcc 测试
- 02检查凭据和测试环境变量
- 03通过重跑与日志逐步诊断
- 04故意引入失败以验证测试
- 05处理中断后的资源清理
适用场景
- 01在测试账户上运行 Provider 验收测试
- 02调查失败或可能使用缓存结果的测试
- 03确认验收测试能否检测回归
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ hashicorp/ agent-skills --skill run-acceptance-tests安装后在 Claude Code 中输入/run-acceptance-tests确认已加载。
详细介绍
验收测试是一个带有 TestAcc 前缀的 Go 测试函数。
运行前:验收测试会通过提供程序的实时 API 创建真实基础设施,这可能会产生费用。继续之前,请确认配置的凭据指向测试账户。
要运行名为 TestAccFeatureHappyPath 的定向验收测试:
-
设置以下环境变量,运行
go test -run=TestAccFeatureHappyPath -timeout 60m:TF_ACC=1
默认使用非详细测试输出。始终显式指定
-timeout:go test默认会在 10 分钟后终止任何测试运行,而验收测试通常会超过这个时长。 -
某些提供程序的验收测试可能需要额外的环境变量。要查明需要哪些变量:
- 阅读测试的
PreCheck/testAccPreCheck函数,并搜索测试文件:grep -rn "os.Getenv" --include="*_test.go"。 - 查看仓库的 README、CONTRIBUTING 或
.env.example中记载的测试设置。 - 提供程序的
Configure方法会显示凭据的解析方式;使用provider-configuration技能(如果可用)了解凭据提供程序链。
为单次测试调用设置变量(
EXAMPLE_API_KEY=... TF_ACC=1 go test ...),不要将它们导出到 shell 配置文件中,也绝不要将密钥值写入仓库中的文件。 - 阅读测试的
若要诊断失败的验收测试,请按以下顺序使用这些选项。这些选项是累加的:每个选项都包含其上方的所有选项。
- 再次运行测试。使用
-count=1选项,确保go test不会使用缓存结果。 - 提供详细的
go test输出。使用-v选项。 - 提供调试级日志。使用环境变量
TF_LOG=debug启用调试级日志。 - 提供持久保留验收测试的 Terraform 工作区。使用环境变量
TF_ACC_WORKING_DIR_PERSIST=1启用持久保留。
验收测试通过也可能是假阴性。要“翻转”名为 TestAccFeatureHappyPath 的通过验收测试:
- 编辑 TestCase 中某个 TestSteps 里的一个 TestCheckFuncs 的值。
- 运行验收测试。预期测试会失败。
- 如果测试失败,则撤销编辑并报告翻转成功。否则,保留编辑并报告翻转失败。
如果测试运行被中断,可能会遗留真实资源;如果提供程序注册了清理器,请运行它们(如果可用,请参阅 provider-test-patterns 技能中的清理器参考)。如需编写或重组测试,请使用 provider-test-patterns 技能。