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