Jmeter-JSON中提取数据

一、jp@gc-JSON/YAML Path EXtractor插件

 

  在使用前需要安装jp@gc-JSON/YAML Path EXtractor插件,在jmeter选项-Plugins Manager 下Available Plugins搜索json/yaml进行安装。如图我已安装完成,在Installed Plugins列表显示。

测试部 > Jmeter-JSON中提取数据 > image2023-2-24 17:40:22.png

测试部 > Jmeter-JSON中提取数据 > image2023-2-24 17:40:53.png



二、jp@gc-JSON/YAML Path EXtractor如何使用

 

  1、线程组-后置处理器-jp@gc-JSON/YAML Path EXtractor添加

 

  2、获取数据时不同的符号表示不同的含义,如下列表



二、jp@gc-JSON/YAML Path EXtractor如何使用

 

  1、线程组-后置处理器-jp@gc-JSON/YAML Path EXtractor添加

 

  2、获取数据时不同的符号表示不同的含义,如下列表





字符/表达式

说明

备注

$

根节点

 
@

当前节点

 
. 或者[]

用于连接父子节点

 
..

深层扫描

 
*

通配符

 
[?(表达式)]

 	
用法:[start:end]。切片

=~

正则表达式匹配

用法:@.key=~/正则表达式/





三、实战操作

1、格式化数据(测试数据)



{
"data":{
"count":34,
"next":"http://***.***-vip.cn/admin_api/v1/consultant/?page=2",
"previous":"dd",
"results":[
        {
        "uuid":"PjYW29qsY9xkWt2pxuYpb8",
        "showname":"超级管理员",
        "mobile":"18888888888",
        "level":4,
        "is_tmk":1,
        "group":"销售组001,销售组002,销售组006,xm1销售组1,测试简化,测试简化"
        },
        {
        "uuid":"CuvM58cudnKYZcuoNVSPSQ",
        "showname":"测试01",
        "mobile":"18111111111",
        "level":4,
        "is_tmk":1,
        "group":"销售组001,销售组002,销售组006,xm1销售组1,测试简化"
        },
            {
            "uuid":"sbSvXLB8vQS6GPNEESqfAg",
            "showname":"测试02",
            "mobile":"19999999999",
            "level":4,
            "is_tmk":1,
            "group":"销售组001,销售组002,销售组006,xm1销售组1,xm1销售组2,测试简化,测试简化222222"
            }
         ]
}
}






2、获取所有uuid

$.data.results[*].uuid


3、嵌套比较深使用深层扫描获取uuid

$..uid



4、获取第一个uuid的值



方式一,完整路径提取



$.data.result[0].uuid



方式二,嵌套比较深可以用深度扫描,但是必须保留uuid的上一层(列表的那一层,表示是列表的第几个元素)



$..results[0].uuid





 5、使用切片获取前两个uuid的值





$..results[0:2].uuid





6、获取前两个uuid的值和对应的showname的值


$..[?(@.showname=="测试01")]
7、获取showname,且值为“测试01”的数据


$..[?(@.showname=="测试01")]


8、使用正则匹配,获取所有数据的uuid值,且showname的值包含“超级”字段
$..[?(@.showname=~/.*超级.*/)]
test20230906.jmx 智慧医院-住院登记.jmx





String inputString = prev.getResponseDataAsString();//自定义一个变量response_data,来获取请求的返回值
//log.info("接口的值"+response_data);

String[] splitArray = inputString.split("");
//StringBuilder csvData = new StringBuilder();
props.put("mycount", String.valueOf(splitArray.length));

for (int i = 0; i < splitArray.length; i++) {
    String value = splitArray[i];
//    log.info("接口的值: " + value);
    // 将值添加到 CSV 数据中
//    csvData.append(value).append(",");
    vars.put("myArray_" + i, value);
}

// 将 CSV 数据写入文件
//String filePath = "c:/test.csv";
//File file = new File(filePath);
//if (!file.exists()) {
//    file.createNewFile();
//}
//FileOutputStream outputStream = new FileOutputStream(file);
//outputStream.write(csvData.toString().getBytes());
//outputStream.close();


${__P(mycount)}


String variableValue = vars.get("myArray_" + ${__jm__xunhuan__idx});
vars.put("myVariable", variableValue);
//log.info("接口的值: " + variableValue);




2,jemter的beanshell断言,并打印报错信息
String resp = prev.getResponseDataAsString();
String code = prev.getResponseCode();
String reqDate = prev.getSamplerData();
String time="${__time(yyyy-MM-dd HH:mm:ss,)}";
if ("200".equals(""+code) == false){  //判断响应是否包含200;也可以判断字符串:if((response.contains("\"bindStatus\":\"Y\""))) 
Failure = true;
String[] ss = resp.split("\n");
FailureMessage = ss[0];
FileWriter fstream = new FileWriter("/home/PerfSpace/03project/errLog/ATH文件下载Error.txt",true);   //打开要写入文件的路径和名称
BufferedWriter out = new BufferedWriter(fstream); 
out.write("===================================began================================");
out.write("请求时间:"+vars.get("time"), "请求报文:"+reqDate);
out.write(System.getProperty("line.separator"));       //换行符,避免内容打印到一行,不方便查看
out.write("响应时间:"+vars.get("time"),"接口响应:"+FailureMessage);
out.write(System.getProperty("line.separator"));
out.write("===================================over================================");
out.write(System.getProperty("line.separator"));
out.close();
fstream.close();
}
else {
Failure = false;
}
————————————————
版权声明:本文为CSDN博主「八二五八二五」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_49428126/article/details/127437442


















  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值