jmeter巧用ForEach控制器
前段時(shí)間做接口自動(dòng)化的時(shí)候遇到很多查詢接口,接口出參會(huì)隨著入?yún)ype的變化,得到不同type下的數(shù)據(jù)。
如上圖,是接口query_financial_stock的說明。測(cè)試時(shí)候?qū)θ雲(yún)inancial_type分別傳入值100301、100302、100303、100304、100305、100306進(jìn)行驗(yàn)證。
上述入?yún)⒌玫降慕Y(jié)果,對(duì)應(yīng)的sql如下:
SELECT
jfp.stock_code,
jfp.stock_name,
jfp.financial_ranking,
jfp.industry_code,
jfp.innercode
FROM
jy_financial_performance jfp
WHERE
jfp.financial_type = “financialtype”ANDjfp.industryname=“{industry_name}”
ORDER BY
jfp.financial_ranking ASC
LIMIT 5
不借助jmeter,修改where條件語句,在數(shù)據(jù)庫執(zhí)行也能很快驗(yàn)證完畢。但當(dāng)類似接口有七八個(gè)的時(shí)候,每個(gè)接口類似的type有6~10個(gè)不等的時(shí)候,你有沒有想過“偷懶”的方法。
借助jemeter的ForEach控制器,三個(gè)步驟可以快速實(shí)現(xiàn)。
1、 定義financial_type值
在jmeter“用戶定義的變量”中定義financial_type各個(gè)值
financial_type_1 = 100301
financial_type_2 = 100302
financial_type_3 = 100303
financial_type_4 = 100304
financial_type_5 = 100305
financial_type_6 = 100306
如下圖:
2、 添加ForEach控制器
如上圖,輸入前綴是financial_type, 左下角勾選“Add _ before number”,與輸入前綴拼接后為“financial_type_”。start index for loop為0,end index for loop為6,是“左開右閉”,即(0,6]。ForEach控制器會(huì)依次取financial_type_1、financial_type_2、financial_type_3、financial_type_4、financial_type_5、financial_type_6 的值,并賦值給 financial_type。
3、 請(qǐng)求接口
接口請(qǐng)求時(shí),將設(shè)置入?yún)inancial_type=${financial_type},每次ForEach控制器更新financial_type字段值時(shí),接口請(qǐng)求入?yún)⒍紩?huì)相應(yīng)變化。如下圖:
此外,還需添加一個(gè)后置控制器JDBC PostProcessor(前置控制器PreProcessor也可以),這個(gè)是為更準(zhǔn)確的斷言做數(shù)據(jù)準(zhǔn)備。將需要做斷言進(jìn)行校驗(yàn)的字段(stock_code,stock_name,financial_ranking,industry_code, innercode),sql選出并輸出(stock_code,stock_name,financial_ranking,industry_code,id)。如下圖:
4、 斷言
設(shè)置合適的斷言,會(huì)提高很大接口自動(dòng)化的效率。如上面這個(gè)接口,主要需要關(guān)注輸出參數(shù)stock_code,stock_name,financial_ranking,industry_code,id的數(shù)據(jù)。如下圖,對(duì)這些數(shù)據(jù)做斷言。
響應(yīng)斷言的“模式匹配規(guī)則”建議選擇“包括”,對(duì)于有一些無關(guān)緊要的輸出字段可以用正則匹配的方法?!鞍ā敝灰獢嘌詳?shù)據(jù)包含在響應(yīng)數(shù)據(jù)里,同時(shí)還可以用正則進(jìn)行匹配?!捌ヅ洹笔切枧c響應(yīng)數(shù)據(jù)完全一致,支持正則匹配,但需全部匹配。“Equals”是完全相同?!癝ubstring”是只要斷言數(shù)據(jù)在響應(yīng)數(shù)據(jù)里即可,是包含關(guān)系,不支持正則。“否”是沒有斷言的數(shù)據(jù)。
總結(jié)
以上是生活随笔為你收集整理的jmeter巧用ForEach控制器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Koordinator 1.0 正式发布
- 下一篇: TFT型液晶显示模块能够依据不同的需求分