go入门教程- 13.9 用(测试数据)表驱动测试

  1. 13.9 用(测试数据)表驱动测试
    1. 链接

13.9 用(测试数据)表驱动测试

编写测试代码时,一个较好的办法是把测试的输入数据和期望的结果写在一起组成一个数据表:表中的每条记录都是一个含有输入和期望值的完整测试用例,有时还可以结合像测试名字这样的额外信息来让测试输出更多的信息。

实际测试时简单迭代表中的每条记录,并执行必要的测试。这在练习 13.4 中有具体的应用。

可以抽象为下面的代码段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var tests = []struct{ 	// Test table
in string
out string

}{
{"in1", "exp1"},
{"in2", "exp2"},
{"in3", "exp3"},
...
}

func TestFunction(t *testing.T) {
for i, tt := range tests {
s := FuncToBeTested(tt.in)
if s != tt.out {
t.Errorf("%d. %q => %q, wanted: %q", i, tt.in, s, tt.out)
}
}
}

如果大部分函数都可以写成这种形式,那么写一个帮助函数 verify 对实际测试会很有帮助:

1
2
3
4
5
func verify(t *testing.T, testnum int, testcase, input, output, expected string) {
if expected != output {
t.Errorf("%d. %s with input = %s: output %s != %s", testnum, testcase, input, output, expected)
}
}

TestFunction 则变为:

1
2
3
4
5
6
func TestFunction(t *testing.T) {
for i, tt := range tests {
s := FuncToBeTested(tt.in)
verify(t, i, “FuncToBeTested: “, tt.in, s, tt.out)
}
}

链接


免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com

推荐阅读:

文章标题:go入门教程- 13.9 用(测试数据)表驱动测试

本文作者:知识铺

发布时间:2019-10-15, 22:30:20

最后更新:2019-10-16, 21:00:37

原始链接:https://blog.zshipu.com/2019/10/15/golang/20191015/13.9/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏