php小编苹果为您介绍如何管理需要 API 密钥的测试。在开发过程中,许多应用程序需要使用 API 密钥来访问第三方服务。然而,管理这些密钥可能会变得复杂和冗长。为了简化这一过程,我们可以采取一些有效的管理策略,如使用环境变量、密钥管理工具、密钥轮换等。这些方法不仅可以提高安全性,还能方便开发人员进行测试和部署。在本文中,我们将详细介绍这些策略,并提供一些建议来帮助您更好地管理需要 API 密钥的测试。
问题内容
我有一些密封测试,这些测试工作得很好。 foo.go
中的代码在 foo_test.go
中进行测试。
但我也有一些需要 API 密钥的测试,我希望将这些测试与密封测试分开,因为我们不在 CI 中运行它们。
如何以与 Go 工具和生态系统良好配合的方式有效地隔离这些测试?
解决方法
有多种方法可以跳过测试。他们中的大多数人都利用testing.t.skip(now)。以下是 skipnow 的一些常见用例。然而,由于这就像任何旧的函数调用一样,您可以根据需要发挥创意。
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")
}
}
运行以下之一:
go test -v
foo_api_key=bar go test -v
package main
import (
"testing"
)
func testalways(t *testing.t) {
// ...
}
func testsometimes(t *testing.t) {
if testing.short() {
t.skip("-short is set")
}
// ...
}
运行以下之一:
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")
}
// ...
}
运行以下之一:
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) {
// ...
}
运行以下之一:
go test -v
go test -v -tags=foo
请注意,使用构建标记,输出不会表明测试已被跳过。除非构建标记包含在命令行(或 goflags 中),否则标记的 .go 文件对编译器来说是不可见的。
以上就是如何管理需要 API 密钥的测试的详细内容,更多请关注编程网其它相关文章!