Jmeter接口測(cè)試之用例數(shù)據(jù)分離
之前我們的用例數(shù)據(jù)都是配置在 Jmeter Http 請(qǐng)求中,每次需要增加,修改用例都需要打開 jmeter 重新編輯,當(dāng)用例越來越多的時(shí)候,用例維護(hù)起來就越來越麻煩,有沒有好的方法來解決這種情況呢?
其實(shí)我們可以將用例的數(shù)據(jù)存放在 csv 文件中,然后通過 csv 文件配置來讀取用例中的數(shù)據(jù),執(zhí)行測(cè)試。用例數(shù)據(jù)如下圖所示:

用例設(shè)計(jì):
這里以 httpbin 接口為例,創(chuàng)建用例文件:jmeter-testcase.csv
用例名稱變量含義:
${caseSeq}:用例編號(hào)
${apiType}:api 類型
${apiSeq} :api 版本號(hào)
${apiName}:api 名稱
${priority}:優(yōu)先級(jí)
${url}:api 路徑
${methods}:請(qǐng)求方法
${parameter}: 請(qǐng)求參數(shù)
${expectValue}:期望值,用于斷言
Jmeter 設(shè)置步驟:
1.新建一個(gè)線程組,命名為:數(shù)據(jù)驅(qū)動(dòng)
2.創(chuàng)建一個(gè) http 請(qǐng)求默認(rèn)值,設(shè)置如下:

3.添加一個(gè)循環(huán)控制器 步驟為:線程組——添加——邏輯控制器——循環(huán)控制器。 循環(huán)控制器的作用可以控制整個(gè)用例循環(huán)執(zhí)行的次數(shù)。默認(rèn)值是 1 根據(jù)用例數(shù)量可以修改為 4

4.在循環(huán)控制器節(jié)點(diǎn)下創(chuàng)建 CSV 文件設(shè)置,具體配置內(nèi)容如下:

5.創(chuàng)建一個(gè) if 控制器,步驟為:線程組——添加——邏輯控制器——if 控制器
if 控制器的作用為根據(jù)不同條件執(zhí)行不同的用例,例如這里根據(jù)不同的接口請(qǐng)求類型,分別創(chuàng)建了 GET 和 POST 兩個(gè)控制器。
GET 設(shè)置的條件語(yǔ)句如下:

條件語(yǔ)句為:"${methods}"=="GET"其中 ${methods}表示引用 csv 中的 methods 中的值。
參數(shù):
Interpret Condition as Variable Expression?:如果這個(gè)選項(xiàng)被選中,將不會(huì)使用 js 解析;條件表達(dá)式的值必須是 true(忽略大小寫),這里我們?nèi)∠催x狀態(tài)。
Evaluate for all children:如果選中這一項(xiàng),在每個(gè)子結(jié)點(diǎn)執(zhí)行前都會(huì)計(jì)算表達(dá)式
POST 條件語(yǔ)句設(shè)置為:"${methods}"=="POST"

6.創(chuàng)建 GET 請(qǐng)求類型的用例如下

用例名稱格式:${caseSeq}_ ${apiSeq}_${apiName}
斷言設(shè)置如下:${expectValue}引用 csv 中對(duì)應(yīng)的值。

最后添加查看結(jié)果樹,然后運(yùn)行可以看到如下運(yùn)行結(jié)果:

7.POST 用例設(shè)置和 GET 類似,不過參數(shù)請(qǐng)求不一樣,是在 body 中,如果發(fā)送的是json格式的參數(shù),需要添加http信息頭管理器。另外請(qǐng)求方式為:POST


運(yùn)行結(jié)果如下:

8.最后在線程組添加一個(gè)查看結(jié)果樹,執(zhí)行可以查看全部用例執(zhí)行情況。

小結(jié)
通過這樣的數(shù)據(jù)驅(qū)動(dòng),當(dāng)面對(duì)大量用例時(shí)在 jmeter 設(shè)置就非常方便,后續(xù)的用例維護(hù)也非常高效,因?yàn)椴挥迷趈meter 一個(gè)個(gè)去單獨(dú)修改用例了。
