1. 程式人生 > >jmeter教程(四):斷言及引數化初識

jmeter教程(四):斷言及引數化初識

上一篇博文中講了一下介面測試的簡單實現,但是測試實施起來,操作很繁瑣。這篇博文就講利用響應斷言和引數化配置,實現一次執行,就把所有的情況都能測試到。

這是一條用例,一條測試用例,肯定有個預期結果,通過相關文件,或是與相關人員溝通,我們能夠得知,這條用例執行的預期結果,像我們現在就應該是:“登入成功!”,這個就是在用例還沒有執行之前就知道一個預期的結果,那麼執行用例的時候,就可以讓程式自動匹配,實際的響應是否與預期的一致。為了便於區分其它介面,我們先給介面起個名稱:

然後在改名後的登入介面上右擊,新增——斷言——響應斷言:

然後配置斷言

儲存指令碼,執行,然後檢視執行結果:

看起來,和沒有加斷言的效果是一樣的。jmeter的機制是這樣的,如果斷言和實際結果符合的話,用例會算作成功,即是成功,自然就不需要顯示斷言,如果斷言和實際結果不符合,才會顯示斷言,並指出不符合的情況。我們看一下斷言與實際結果不相符的情況,把登入介面的請求引數改一下

改一下斷言文字

然後,儲存,再執行,檢視響應結果

可以看到用例執行失敗了,點選叉叉前面的符號,可以展開

這裡面就會提示,介面的實際響應資料,與斷言“使用者名稱或密碼不正確!”匹配不上,所以用例執行失敗。那實際響應結果是什麼呢?點登入介面,然後看響應資料

我們就可以看到,實際的響應結果裡面,使用者名稱少了一個名,所以這條用例就執行失敗了。

可以自動判斷結果了,接下來就是做引數化了,先新建一個記事本,記事本中寫入:

記事本中的一行,就是一條用例,用英文的逗號分隔開,有三個資料,第一個是使用者名稱,第二個是密碼,第三個是預期結果。注意,檔案要以一個空行結束,可以按Ctrl+a全選,看一下

看到游標在最後的一個空行閃,就可以了。然後就是在jmeter中引入這個檔案了,線上程組上右擊,新增——配置元件——CSV Data Set Config,

新增完以後,這個配置檔案,線上程組的最下面,讀這些配置,肯定是在介面呼叫之前,所以,可以按住新新增的配置元件,拖到 登入介面 的上面

配置CSV Data Set Config

通常情況下,只需要設定檔案路徑,和儲存資料的變數就可以了,檔案編碼、分隔符,用預設的就可以。下面的一些設定,英文好的應該能夠看懂,是否允許引用資料,這個一般用False就行。讀到檔案末尾,是否重複讀資料。讀到檔案末尾,是否停止執行緒。資料是否共享給其它執行緒。這裡讀取檔案,每一行的資料,會有三個變數接收,就是第三行定義的,然後就是,這三個變數,需要到登入介面中使用,使用的方式就是:${變數名}

斷言裡的斷言文字也使用變數

然後,記事本里,一共有8條記錄,也就是有8條用例,那就要讓指令碼迴圈執行8次。線上程組的設定裡,迴圈次數設定為8

儲存指令碼,執行,然後看執行結果

這個時候,就會看到,登入介面,執行了8次,最後一個失敗了,這個我們前面知道了,是少了一個“名”字所以失敗了。那麼怎麼知道,每次請求的資料,是不是用的記事本中的呢,可以看結果中的請求

可以看到請求的引數的值,正是記事本中第二行的資料。

不僅僅是引數和斷言的文字可以使用變數,伺服器的地址,埠號,路徑裡面,都可以使用變數,比如,我們寫好了一系列功能的介面測試指令碼,但是這個指令碼可能會在多個環境中執行,比如有測試環境,預釋出環境,從一個環境到另一個環境,伺服器的地址都變了,甚至埠號也會變,那就所有介面都要改了,很麻煩,所以就可以在測試計劃中使用一個全域性的變數,所有接口裡面都使用這個變數,如果環境或是埠號變了,只需要改一下變數的值就可以了

然後接口裡就這樣寫

儲存指令碼,執行一下,結果和之前是一樣的。至於路徑裡使用變數,這裡就不演示了,引數化的使用就這些,但是生成引數的方式有幾種,斷言裡面的知識也是非常的多,這些,後面講啦