現在的接口測試中,大多數請求響應的報文格式都為json格式支竹。那么在Jmeter接口測試中如何對json格式的數據進行處理呢眷细,本文整理了三種常見的方式。
json報文
{
"accidentNo": "Acc_942900",
"companyId": "${companyID_83}",
"companyCode": "${companyCode_83}",
"account": "${account_83}",
"claimUniqueId": "claim_895073",
"interfaceCode": "ClaimPush",
"message": "83 dummy sampler success",
"resultCode": "000",
"auditReport": {
"auditRuleTriggers": [{
"actualValue": " 報案次數:\n 2\n",
"auditScore": 20,
"itemInfoList": [],
"itemName": "報案人姓名:王俊",
"redLineType": "00",
"ruleName": "報案人在多張保單中出現",
"ruleNo": "0102010024",
"ruleType": "02",
"ruleValue": " 報案次數:\n 1-9999\n"
},
{
"actualValue": "\t\t\t\t定型的具體車型配置:523LI 2011款 2.5L 兩驅 手自一體 豪華版\n",
"auditScore": 30,
"itemInfoList": [],
"itemName": "",
"redLineType": "00",
"ruleName": "車輛定型的車型配置與承保的車型配置不一致(車型配置名稱)",
"ruleNo": "0102020008",
"ruleType": "02",
"ruleValue": " 承保的車型配置:嘉年華 兩廂 2009款 1.3L 手動 經典版\n"
},
{
"actualValue": "",
"auditScore": 25,
"itemInfoList": [],
"itemName": "修理廠名稱:安徽SC修理廠",
"redLineType": "00",
"ruleName": "重點關注修理廠",
"ruleNo": "0102030001",
"ruleType": "02",
"ruleValue": ""
},
{
"actualValue": " 5\n",
"auditScore": 10,
"itemInfoList": [],
"itemName": "",
"redLineType": "00",
"ruleName": "碰撞點選擇過多",
"ruleNo": "0102010042",
"ruleType": "02",
"ruleValue": " 1\n"
},
{
"actualValue": "",
"auditScore": 10,
"itemInfoList": [],
"itemName": "",
"redLineType": "00",
"ruleName": "非第一現場查勘",
"ruleNo": "0102010014",
"ruleType": "02",
"ruleValue": ""
},
{
"actualValue": "",
"auditScore": 20,
"itemInfoList": [{
"claimItemUniqueId": null,
"itemName": "右前翼子板后內襯板",
"itemType": "02",
"materialFeeAfterDiscount": null,
"paintFeeAfterDiscount": 0.5,
"partFeeAfterDiscount": null,
"propAmount": null,
"propSecondType": null,
"propType": null,
"quantity": null,
"removeLaborFeeDiscount": 12.5,
"repairLaborFeeDiscount": 1,
"standardPartId": "162",
"unitPrice": null
}],
"itemName": "右前翼子板后內襯板\n",
"redLineType": "00",
"ruleName": "不建議外修的配件進行了外修操作",
"ruleNo": "0103010018",
"ruleType": "03",
"ruleValue": ""
}]
}
}
(1)使用正則表達式提取
在對應的請求下添加正則表達式提取器(后置處理器-->正則表達式提取器)
image.png
可以通過debug sampler查看
image.png
(2)使用 JMeter 的后置處理器JSON Extractor獲取json數據中特定位置的數據
在對應的請求下添加JSON Extractor(后置處理器-->JSON Extractor)
image.png
可以通過察看結果樹格粪,JSON Path Tester驗證結果是否正確
image.png
(3)使用JMeter的后置處理器BeanShell Post Processor來處理Json數據
需要將fastjson.jar包拷貝到 jmeter lib 文件夾下后重啟 jmeter
在在對應的請求下添加后置處理器-->BeanShell PostProcessor
image.png
代碼:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
String json=prev.getResponseDataAsString();
JSONObject jso = JSON.parseObject(json);
JSONObject data = jso.getJSONObject("auditReport");
JSONArray array = data.getJSONArray("auditRuleTriggers");
//vars.put("ruleName",array.getJSONObject(1).getString("ruleName"));
log.info("-----------------------------------------------------------------------------"+data);
int length=0;
for(Object o : array){
String ruleName = o.getString("ruleName");
log.info(ruleName);
length++;
}
vars.put("length", Integer.toString(length));
log.info("-----------------------------------------------------------------------------"+length);