基于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个参数都执行了,但只有一个用例成功:

 

 需要注意的几个点如下:

  1. 我们通过groovy支持的操作字符中可以看到, <<的意思是传入列表。这点和linux有点类似
  2. 不仅仅可以传列表,还可以传其它的集合,如:<< 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
    }

这能多参数我们是通过表格的形式来传入,结果如下:

 

 需要注意的有几点:

  1. 既然是表格,所有就表头和表内容,所以一行我们就叫表头,写的是数据变量名,通过|来分格,表内容按对应的顺序写入
  2. 表格形式驱动,至少要含有两个单元格。有些人也会问,我就一个参数但还想用表格形式,该怎么写,可用下面方法:

      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

 

posted @ 2022-03-25 10:29  Believer007  阅读(186)  评论(0编辑  收藏  举报