基于gradle的Groovy之Spock测试框架入门三
既然是框架,自动少不了不同参数用例的驱动,也叫参数化或数据驱动
在Spock中,参数化使用的是关键字是where
我们还是通过实例来演示
实例一
我们还是继续在原来的groovy测试文件中加入下面的测试用例,无意义的
def 'check data pipes' () { when: def intput2 = newinput then: def sum= intput2 + 1 println(sum) sum == 4 where: newinput << [2,3,5] }
这里我们使用where关键字来参数化,通过<< 符号来传入
我们再来看看执行结果,从结果中我们可以看到3个参数都执行了,但只有一个用例成功:
需要注意的几个点如下:
- 我们通过groovy支持的操作字符中可以看到, <<的意思是传入列表。这点和linux有点类似
- 不仅仅可以传列表,还可以传其它的集合,如:<< sql.rows("xxxx")
实例二
实例一介绍的是列表的传入,下面介绍传入表格的多参数的形式
def "maximum of to numbers"(){ when: def sum = Math.max(a, b) def result = c then: sum == result where: a|b|c 1|3|3 7|4|7 0|0|0 }
这能多参数我们是通过表格的形式来传入,结果如下:
需要注意的有几点:
- 既然是表格,所有就表头和表内容,所以一行我们就叫表头,写的是数据变量名,通过|来分格,表内容按对应的顺序写入
- 表格形式驱动,至少要含有两个单元格。有些人也会问,我就一个参数但还想用表格形式,该怎么写,可用下面方法:
a | _
1| _
实例三
这时候很多人会问,既然是BDD形式,我需要在用例名字上体现参数的变化,应该怎么做呢?如下
做法如下,我们还是拿实例二的例子来改
def "maximum of #a & #b to numbers should #c"(){ when: def sum = Math.max(a, b) def result = c then: sum == result where: a|b|c 1|3|3 7|4|7 0|0|0 }
可以看出,通过#的符号来参数化内容,结果如下:
是不是比实例二更直观了。
其实更高级的用例我们可以参数官方网站:https://spockframework.org/spock/docs/2.0/all_in_one.html#data-tables
Email:362299908@qq.com