mcpField
R
run-acceptance-tests

run-acceptance-tests

github.com/hashicorp测试与质量9093.7k 次安装今天更新
代码仓库

关于 run-acceptance-tests

用于安全运行和诊断 Go 编写的 Terraform Provider 验收测试的技能,说明凭据检查、测试环境变量、调试方法,以及创建真实基础设施后的清理注意事项。

主要功能

  1. 01运行指定的 TestAcc 测试
  2. 02检查凭据和测试环境变量
  3. 03通过重跑与日志逐步诊断
  4. 04故意引入失败以验证测试
  5. 05处理中断后的资源清理

适用场景

  1. 01在测试账户上运行 Provider 验收测试
  2. 02调查失败或可能使用缓存结果的测试
  3. 03确认验收测试能否检测回归

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/hashicorp/agent-skills --skill run-acceptance-tests

安装后在 Claude Code 中输入/run-acceptance-tests确认已加载。

详细介绍

验收测试是一个带有 TestAcc 前缀的 Go 测试函数。

运行前:验收测试会通过提供程序的实时 API 创建真实基础设施,这可能会产生费用。继续之前,请确认配置的凭据指向测试账户。

要运行名为 TestAccFeatureHappyPath 的定向验收测试:

  1. 设置以下环境变量,运行 go test -run=TestAccFeatureHappyPath -timeout 60m:

    • TF_ACC=1

    默认使用非详细测试输出。始终显式指定 -timeout:go test 默认会在 10 分钟后终止任何测试运行,而验收测试通常会超过这个时长。

  2. 某些提供程序的验收测试可能需要额外的环境变量。要查明需要哪些变量:

    • 阅读测试的 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 配置文件中,也绝不要将密钥值写入仓库中的文件。

若要诊断失败的验收测试,请按以下顺序使用这些选项。这些选项是累加的:每个选项都包含其上方的所有选项。

  1. 再次运行测试。使用 -count=1 选项,确保 go test 不会使用缓存结果。
  2. 提供详细的 go test 输出。使用 -v 选项。
  3. 提供调试级日志。使用环境变量 TF_LOG=debug 启用调试级日志。
  4. 提供持久保留验收测试的 Terraform 工作区。使用环境变量 TF_ACC_WORKING_DIR_PERSIST=1 启用持久保留。

验收测试通过也可能是假阴性。要“翻转”名为 TestAccFeatureHappyPath 的通过验收测试:

  1. 编辑 TestCase 中某个 TestSteps 里的一个 TestCheckFuncs 的值。
  2. 运行验收测试。预期测试会失败。
  3. 如果测试失败,则撤销编辑并报告翻转成功。否则,保留编辑并报告翻转失败。

如果测试运行被中断,可能会遗留真实资源;如果提供程序注册了清理器,请运行它们(如果可用,请参阅 provider-test-patterns 技能中的清理器参考)。如需编写或重组测试,请使用 provider-test-patterns 技能。

评论

支持 Markdown