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 ...)。また、リポジトリ内のファイルにシークレット値を絶対に書き込まないでください。

失敗した受け入れテストを診断するには、次のオプションを順番に使用します。これらのオプションは累積的です。各オプションには、それより前のすべてのオプションが含まれます。

  1. テストを再度実行します。go test がキャッシュ済みの結果を使用しないように、-count=1 オプションを使用します。
  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 スキルを使用してください。

コメント