Heim >Backend-Entwicklung >Golang >So verwalten Sie Tests, die API-Schlüssel erfordern

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

WBOY
WBOYnach vorne
2024-02-09 23:06:09861Durchsuche

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

Führen Sie einen der folgenden Schritte aus:

go test -v
foo_api_key=bar go test -v

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

    // ...
}

Führen Sie einen der folgenden Schritte aus:

go test -v -short
go test -v

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

    // ...
}

Führen Sie einen der folgenden Schritte aus:

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

Verwenden Sie , um Einschränkungen zu erstellen

// 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) {
    // ...
}

Führen Sie einen der folgenden Schritte aus:

go test -v
go test -v -tags=foo

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen