Éditeur PHP Apple vous présente comment gérer les tests qui nécessitent des clés API. Lors du développement, de nombreuses applications nécessitent des clés API pour accéder aux services tiers. Cependant, la gestion de ces clés peut devenir complexe et longue. Pour simplifier ce processus, nous pouvons adopter certaines stratégies de gestion efficaces, telles que l'utilisation de variables d'environnement, d'outils de gestion de clés, de rotation des clés, etc. Ces méthodes améliorent non seulement la sécurité, mais facilitent également les tests et le déploiement pour les développeurs. Dans cet article, nous détaillerons ces stratégies et fournirons quelques suggestions pour vous aider à mieux gérer les tests nécessitant des clés API.
J'ai des tests d'étanchéité qui fonctionnent très bien. foo.go
中的代码在 foo_test.go
pour tester.
Mais j'ai aussi certains tests qui nécessitent une clé API et je souhaite les garder séparés des tests scellés puisque nous ne les exécutons pas en CI.
Comment isoler efficacement ces tests d'une manière qui fonctionne bien avec les outils et l'écosystème Go ?
Il existe plusieurs façons d'ignorer les tests. La plupart d'entre eux utilisent testing.t.skip(now). Voici quelques cas d’utilisation courants de skipnow. Cependant, comme il s’agit de n’importe quel ancien appel de fonction, vous pouvez faire preuve d’autant de créativité que vous le souhaitez.
package main import ( "os" "testing" ) func testalways(t *testing.t) { } func testsometimes(t *testing.t) { key := os.getenv("foo_api_key") if key == "" { t.skip("foo_api_key is empty") } }
Exécutez l'une des opérations suivantes :
go test -v foo_api_key=bar go test -v
short
drapeaupackage main import ( "testing" ) func testalways(t *testing.t) { // ... } func testsometimes(t *testing.t) { if testing.short() { t.skip("-short is set") } // ... }
Exécutez l'une des opérations suivantes :
go test -v -short go test -v
package main import ( "flag" "testing" ) var withfoo = false // or true to run test by default func init() { flag.boolvar(&withfoo, "with-foo", withfoo, "include foo tests") } func testalways(t *testing.t) { // ... } func testsometimes(t *testing.t) { if !withfoo { t.skip("-with-foo is not set") } // ... }
Exécutez l'une des opérations suivantes :
go test -v go test -v -with-foo
// main_test.go package main import ( "testing" ) func testalways(t *testing.t) { // ... }
// foo_test.go //go:build foo package main import ( "testing" ) func testsometimes(t *testing.t) { // ... }
Exécutez l'une des opérations suivantes :
go test -v go test -v -tags=foo
Veuillez noter qu'avec les indicateurs de build, la sortie n'indiquera pas que le test a été ignoré. Un fichier .go balisé est invisible pour le compilateur à moins que l'indicateur de construction soit inclus sur la ligne de commande (ou dans goflags).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!