Maison > développement back-end > Golang > le corps du texte

Comment gérer les tests qui nécessitent des clés API

WBOY
Libérer: 2024-02-09 23:06:09
avant
850 Les gens l'ont consulté

如何管理需要 API 密钥的测试

É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.

Contenu des questions

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 ?

Solution de contournement

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.

Utiliser des variables d'environnement

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")
    }
}
Copier après la connexion

Exécutez l'une des opérations suivantes :

go test -v
foo_api_key=bar go test -v
Copier après la connexion

Utilisez le shortdrapeau

intégré
package main

import (
    "testing"
)

func testalways(t *testing.t) {
    // ...
}

func testsometimes(t *testing.t) {
    if testing.short() {
        t.skip("-short is set")
    }

    // ...
}
Copier après la connexion

Exécutez l'une des opérations suivantes :

go test -v -short
go test -v
Copier après la connexion

Utilisez un logo personnalisé

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")
    }

    // ...
}
Copier après la connexion

Exécutez l'une des opérations suivantes :

go test -v
go test -v -with-foo
Copier après la connexion

Utilisez pour créer des contraintes

// main_test.go
package main

import (
    "testing"
)

func testalways(t *testing.t) {
    // ...
}
Copier après la connexion
// foo_test.go
//go:build foo
package main

import (
    "testing"
)

func testsometimes(t *testing.t) {
    // ...
}
Copier après la connexion

Exécutez l'une des opérations suivantes :

go test -v
go test -v -tags=foo
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!