Jmeter介面測試(七)用例資料分離
之前我們的用例資料都是配置在 Jmeter Http 請求中,每次需要增加,修改用例都需要開啟 jmeter 重新編輯,當用例越來越多的時候,用例維護起來就越來越麻煩,有沒有好的方法來解決這種情況呢?
其實我們可以將用例的資料存放在 csv 檔案中,然後通過 csv 檔案配置來讀取用例中的資料,執行測試。用例資料如下圖所示:
用例設計:
這裡以 httpbin 介面為例,建立用例檔案:jmeter-testcase.csv
用例名稱變數含義:
-
- ${caseSeq}:用例編號
- ${apiType}:api 型別
- ${apiSeq} :api 版本號
- ${apiName}:api 名稱
- ${priority}:優先順序
- ${url}:api 路徑
- ${methods}:請求方法
- ${parameter}: 請求引數
- ${expectValue}:期望值,用於斷言
Jmeter 設定步驟:
1.新建一個執行緒組,命名為:資料驅動
2.建立一個 http 請求預設值,設定如下:
3.新增一個迴圈控制器 步驟為:執行緒組——新增——邏輯控制器——迴圈控制器。 迴圈控制器的作用可以控制整個用例迴圈執行的次數。預設值是 1 根據用例數量可以修改為 4
4.在迴圈控制器節點下建立 CSV 檔案設定,具體配置內容如下:
5.建立一個 if 控制器,步驟為:執行緒組——新增——邏輯控制器——if 控制器
if 控制器的作用為根據不同條件執行不同的用例,例如這裡根據不同的介面請求型別,分別建立了 GET 和 POST 兩個控制器。
GET 設定的條件語句如下:
條件語句為:"${methods}"=="GET"其中 ${methods}表示引用 csv 中的 methods 中的值。
引數:
-
- Interpret Condition as Variable Expression?:如果這個選項被選中,將不會使用 js 解析;條件表示式的值必須是 true(忽略大小寫),這裡我們取消勾選狀態。
- Evaluate for all children:如果選中這一項,在每個子結點執行前都會計算表示式
POST 條件語句設定為:"${methods}"=="POST"
6.建立 GET 請求型別的用例如下
用例名稱格式:${caseSeq}_ ${apiSeq}_${apiName}
斷言設定如下:${expectValue}引用 csv 中對應的值。
最後新增檢視結果樹,然後執行可以看到如下執行結果:
7.POST 用例設定和 GET 類似,不過引數請求不一樣,是在 body 中,如果傳送的是json格式的引數,需要新增http資訊頭管理器。另外請求方式為:POST
執行結果如下:
8.最後線上程組新增一個檢視結果樹,執行可以檢視全部用例執行情況。
小結
通過這樣的資料驅動,當面對大量用例時在 jmeter 設定就非常方便,後續的用例維護也非常高效,因為不用在jmeter 一個個去單獨修改用例了。