Maison  >  Article  >  développement back-end  >  Comment gérer les tests qui nécessitent des clés API

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

WBOY
WBOYavant
2024-02-09 23:06:09813parcourir

如何管理需要 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")
    }
}

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

go test -v
foo_api_key=bar go test -v

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

    // ...
}

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

go test -v -short
go test -v

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

    // ...
}

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

go test -v
go test -v -with-foo

Utilisez pour créer des contraintes

// 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer