Jmeter beanshell断言:响应消息中的数据从多张表中读取

背景:

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:

扫描二维码关注公众号,回复: 8734605 查看本文章

 

 (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:查询结果与期望值不一致";
  }

猜你喜欢

转载自www.cnblogs.com/tester-zhangxiaona/p/12218785.html