在为golang编写测试用例时,传递需要提供给测试的变量的标准方法是什么。例如,我们不想在测试用例的源代码中嵌入密码。
处理此问题的最标准方法是什么?我们是否有测试用例寻找配置文件?环境变量?还有吗
使用环境变量
func func TestFoo(t *testing.T) {
x := os.Getenv("MY_X")
fmt.Println(x)
}
Run Code Online (Sandbox Code Playgroud)
然后像这样调用你的测试
MY_X=bar go test -v ./... -run TestFoo
Run Code Online (Sandbox Code Playgroud)
它应该打印 bar
看来我偶然发现了答案。将其添加到测试用例中可以传递参数,即
var password string
func init() {
flag.StringVar(&password, "password", "", "Database Password")
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以执行以下操作:
go test github.com/user/project -password=123345
Run Code Online (Sandbox Code Playgroud)
(如下所述,请不要在不信任测试服务器上有权查看正在运行的进程的其他用户的测试中执行此操作(即,也许测试数据库中包含敏感数据。但是。在喜欢将敏感数据保存在测试环境中的组织中,这可能是您最少的安全问题)
| 归档时间: |
|
| 查看次数: |
2197 次 |
| 最近记录: |