如何在测试中传递用户名和密码等参数

How to pass arguments such as username and password in a test

我使用下面的代码来初始化与 avi 控制器的连接,

func TestAvi(t *testing.T) {
    aviClient, err := clients.NewAviClient("<CONTROLLERNAME>", "<USERID>",
        session.SetPassword("<PASSWORD"),
        session.SetTenant("<TENANT>"),
        session.SetInsecure)
    if err != nil {
        t.Error(err)
    }

然后我 运行 go test 命令到 运行 代码。 我想外部化 CONTROLLERNAME、USERID、PASSWORD 和 TENANT。这样我就可以将这些作为参数传递给 go test 命令。

有什么帮助吗?

我不建议通过 CLI args 传递它们,它们通常会被记录下来。

一个简单且使用最广泛的解决方案是通过环境变量传递此类信息,您可以使用 os.Getenv() 函数读取这些信息。

如何设置环境变量完全取决于您,并且可能因系统而异。

例如:

func TestAvi(t *testing.T) {
    controller := os.Getenv("AVI_CONTROLLERNAME")
    password := os.Getenv("AVI_PASSWORD")
    tenant := os.Getenv("AVI_TENANT")
    userID := os.Getenv("AVI_USERID")
    
    aviClient, err := clients.NewAviClient(controller, userID,
        session.SetPassword(password),
        session.SetTenant(tenant),
        session.SetInsecure)

    // ...
}