So verwalten Sie Tests, die API-Schlüssel erfordern

WBOY
Freigeben: 2024-02-09 23:06:09
nach vorne
832 Leute haben es durchsucht

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

PHP-Editor Apple stellt Ihnen vor, wie Sie Tests verwalten, die API-Schlüssel erfordern. Während der Entwicklung benötigen viele Anwendungen API-Schlüssel, um auf Dienste von Drittanbietern zuzugreifen. Allerdings kann die Verwaltung dieser Schlüssel komplex und langwierig werden. Um diesen Prozess zu vereinfachen, können wir einige effektive Verwaltungsstrategien anwenden, z. B. die Verwendung von Umgebungsvariablen, Schlüsselverwaltungstools, Schlüsselrotation usw. Diese Methoden verbessern nicht nur die Sicherheit, sondern erleichtern Entwicklern auch das Testen und Bereitstellen. In diesem Artikel gehen wir detailliert auf diese Strategien ein und geben einige Vorschläge, die Ihnen dabei helfen sollen, Tests, die API-Schlüssel erfordern, besser zu verwalten.

Frageninhalt

Ich habe einige Siegeltests, die großartig funktionieren. foo.go 中的代码在 foo_test.go zum Testen.

Aber ich habe auch einige Tests, die einen API-Schlüssel erfordern, und ich möchte diese von den versiegelten Tests getrennt halten, da wir sie nicht in CI ausführen.

Wie kann man diese Tests effektiv isolieren, sodass sie gut mit den Tools und dem Ökosystem von Go harmonieren?

Problemumgehung

Es gibt mehrere Möglichkeiten, Tests zu überspringen. Die meisten von ihnen nutzen testing.t.skip(now). Hier sind einige häufige Anwendungsfälle für Skipnow. Da dies jedoch wie jeder alte Funktionsaufruf ist, können Sie Ihrer Kreativität freien Lauf lassen.

Umgebungsvariablen verwenden

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")
    }
}
Nach dem Login kopieren

Führen Sie einen der folgenden Schritte aus:

go test -v
foo_api_key=bar go test -v
Nach dem Login kopieren

Verwenden Sie die integrierte shortFlagge

package main

import (
    "testing"
)

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

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

    // ...
}
Nach dem Login kopieren

Führen Sie einen der folgenden Schritte aus:

go test -v -short
go test -v
Nach dem Login kopieren

Benutzerdefiniertes Logo verwenden

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

    // ...
}
Nach dem Login kopieren

Führen Sie einen der folgenden Schritte aus:

go test -v
go test -v -with-foo
Nach dem Login kopieren

Verwenden Sie , um Einschränkungen zu erstellen

// main_test.go
package main

import (
    "testing"
)

func testalways(t *testing.t) {
    // ...
}
Nach dem Login kopieren
// foo_test.go
//go:build foo
package main

import (
    "testing"
)

func testsometimes(t *testing.t) {
    // ...
}
Nach dem Login kopieren

Führen Sie einen der folgenden Schritte aus:

go test -v
go test -v -tags=foo
Nach dem Login kopieren

Bitte beachten Sie, dass bei Build-Flags die Ausgabe nicht anzeigt, dass der Test übersprungen wurde. Eine mit Tags versehene .go-Datei ist für den Compiler unsichtbar, es sei denn, das Build-Flag ist in der Befehlszeile (oder in Goflags) enthalten.

Das obige ist der detaillierte Inhalt vonSo verwalten Sie Tests, die API-Schlüssel erfordern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!