码迷,mamicode.com
首页 > Web开发 > 详细

Jmeter(三十四)_Beanshell解析并提取json响应

时间:2018-09-03 13:34:50      阅读:574      评论:0      收藏:0      [点我收藏+]

标签:class   添加   tps   string   sonar   数组   接口   方式   com   

1:前置条件

将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中;否则会报:Typed variable declaration : Class: JSONObject not found in namespace的错误

技术分享图片

2:解析思路

利用beanshell获取到json响应,然后通过JSONObject 和JSONArray 将数组解析,遍历数组的length之后,提取参数值

我们需要解析如下的json响应,提取出中间的Name和population

技术分享图片

 

//导入json包
import org.json.*;
//获取获取请求的返回值
String response_data = prev.getResponseDataAsString();
//日志打印获取请求的返回值
log.info(response_data);
//将String类型的返回值构造成JSONObject对象
JSONObject data_obj = new JSONObject(response_data);

//获取作为下一个请求post的参数值Province(两种方式)
//String Provincelist_str = data_obj.get("Province").toString();
JSONArray Provincelist_str = data_obj.getJSONArray("Province");
//log.info(Provincelist_str);

//获取Province数组的长度
int len = Provincelist_str.length();

String strlen = Integer.toString(len);

vars.put("MessageNum",strlen);

log.info(strlen);

int i = 0;

for(;i < len;++i)
{
//获取 data[ i ] 数组对象
JSONObject jsonTemp = (JSONObject)Provincelist_str.getJSONObject(i);

switch(i)

{
case 0:
//两种提取参数的写法
String NameItems = jsonTemp.getString("Name");
// String NameItems = jsonTemp.get("Name").toString();

// 两种打印参数的方法
// vars.put("Name_1", jsonTemp.getString("Name"));
vars.put("Name_1", NameItems);
log.info(NameItems);

}
}

技术分享图片

加debug之后,发现提取到了两组数据,分别是省份和人口,之后就可以在后续接口进行调用了

你还在为找不到可练习的接口而烦恼吗?现在加入龙渊阁,手把手教你搭建属于自己的接口测试环境!

 

点击这里进入史上最具活力的测试交流平台

 

Jmeter(三十四)_Beanshell解析并提取json响应

标签:class   添加   tps   string   sonar   数组   接口   方式   com   

原文地址:https://www.cnblogs.com/Zfc-Cjk/p/9577621.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!