基於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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章