背景:
http响应消息结构:
{"code":0,"message":"查询餐厅成功","data":{"id":"0Yu1yur2wW7MAGww","diningname":"风华苑餐厅","type":2,"operator":"2","officezone":"10","deviceno":"04201812001351,04201812001252,04201910000229,04201912000646"}}
其中data的id、diningname、type、operator、officezone对应数据库中tb_diningroom中的id、diningname、type、operator、officezone,deviceno对应tb_diningdeviceinfo中的deviceno。
问题:
如何对响应消息中的data部分进行断言
解决办法:
(1)在Jmeter http request下添加json Extractor提取data:
(2)分别查询tb_diningroom和tb_diningdeviceinfo表,查询结果分别为:
dbfindDiningroomByIdObj=[{diningname=风华苑餐厅, officezone=10, id=0avwOBPEM4YnBt0w, type=2, operator=2, deptno=null}]
dbdiningDeviceInfoObj=[{deviceno=04201812001351}, {deviceno=04201812001252}, {deviceno=04201910000229}, {deviceno=04201912000646}]
并将dbdiningDeviceInfoObj通过beanshell Post Processors转换为deviceno_db=04201812001351,04201812001252,04201910000229,04201912000646
(3)使用Beanshell Assertion进行断言:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import java.util.*;
//响应消息中提取的将data转换为map格式
String data = vars.get("data");
Map data_map = JSON.parseObject(data, Map.class);
//数据库响应数据处理
var findDiningroom_db = vars.getObject("dbfindDiningroomByIdObj").get(0);
//删除deptno元素
findDiningroom_db.remove("deptno");
//增加deviceno
String deviceno_db = vars.get("deviceno_db");
findDiningroom_db.put("deviceno",deviceno_db);
if(data_map.equals(findDiningroom_db)== true){
Failure=false;
FailureMessage ="PASS:查询结果与期望值一致";
} else{
Failure=true;
FailureMessage ="Failure:查询结果与期望值不一致";
}
Jmeter beanshell断言:响应消息中的数据从多张表中读取
原文:https://www.cnblogs.com/tester-zhangxiaona/p/12218785.html