run-acceptance-tests

Par hashicorp · agent-skills

Guide pour exécuter les tests d'acceptation d'un provider Terraform. À utiliser lorsqu'on vous demande d'exécuter un test d'acceptation ou un test avec le préfixe `TestAcc`, lorsqu'un test échoue avec des variables d'environnement manquantes, ou pour diagnostiquer un test d'acceptation qui échoue ou qui passe de façon suspecte.

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

Un test d'acceptation est une fonction de test Go avec le préfixe TestAcc.

Avant d'exécuter : les tests d'acceptation créent une infrastructure réelle contre l'API en direct du fournisseur, ce qui peut entraîner des coûts. Confirmez que les identifiants configurés pointent vers un compte de test avant de procéder.

Pour exécuter un test d'acceptation ciblé nommé TestAccFeatureHappyPath :

  1. Exécutez go test -run=TestAccFeatureHappyPath -timeout 60m avec les variables d'environnement suivantes :

    • TF_ACC=1

    Par défaut, la sortie du test est non-détaillée. Passez toujours un -timeout explicite : go test arrête toute exécution de test après 10 minutes par défaut, et les tests d'acceptation dépassent régulièrement ce délai.

  2. Les tests d'acceptation peuvent nécessiter des variables d'environnement supplémentaires pour des fournisseurs spécifiques. Pour découvrir lesquelles :

    • Lisez la fonction PreCheck / testAccPreCheck du test et parcourez les fichiers de test : grep -rn "os.Getenv" --include="*_test.go".
    • Consultez le README du repository, CONTRIBUTING, ou .env.example pour la documentation de configuration des tests.
    • La méthode Configure du fournisseur montre comment les identifiants sont résolus ; utilisez la skill provider-configuration (si disponible) pour comprendre une chaîne de fournisseurs d'identifiants.

    Définissez les variables pour l'invocation d'un seul test (EXAMPLE_API_KEY=... TF_ACC=1 go test ...) plutôt que de les exporter dans le profil du shell, et ne mémorisez jamais les valeurs secrètes dans des fichiers au sein du repository.

Pour diagnostiquer un test d'acceptation défaillant, utilisez ces options, dans l'ordre. Ces options sont cumulatives : chaque option inclut toutes les options précédentes.

  1. Réexécutez le test. Utilisez l'option -count=1 pour vous assurer que go test n'utilise pas un résultat mis en cache.
  2. Offrez une sortie go test détaillée. Utilisez l'option -v.
  3. Offrez une journalisation au niveau du débogage. Activez la journalisation au niveau du débogage avec la variable d'environnement TF_LOG=debug.
  4. Offrez de conserver l'espace de travail Terraform du test d'acceptation. Activez la persistance avec la variable d'environnement TF_ACC_WORKING_DIR_PERSIST=1.

Un test d'acceptation réussi peut être un faux négatif. Pour « inverser » un test d'acceptation réussi nommé TestAccFeatureHappyPath :

  1. Modifiez la valeur d'une des TestCheckFuncs dans l'une des TestSteps dans la TestCase.
  2. Exécutez le test d'acceptation. Attendez-vous à ce que le test échoue.
  3. Si le test échoue, annulez la modification et signalez un retournement réussi. Sinon, conservez la modification et signalez un retournement infructueux.

Si une exécution de test est interrompue, des ressources réelles peuvent être laissées ; exécutez les sweepers du fournisseur s'il les enregistre (voir la référence des sweepers dans la skill provider-test-patterns, si disponible). Pour la rédaction ou la restructuration de tests, utilisez la skill provider-test-patterns.

Skills similaires