jmeter中保存响应文件到本地 (单个字段,多个字段,响应数据为集合形式)


前言

在工作中有时候需要给业务导出数据,简单的我一般是通过数据库编写sql语句,然后导出excel,有时候使用开发封装的接口,获取接口的响应数据到本地。今天就分享一下怎么将响应数据中的某些字段保存到本地。

一、简单示例(单个字段)

如获取登录接口中的token,并保存到本地:

1.使用jmeter调试登录接口成功

接口调试成功

2.使用json提取器或者正则表则式提取token

通常我比较喜欢使用json提取器获取字段,json提取器和正则表达式的使用方法大家可以搜搜一下,主要是jsonpath的路径和正则表达式填写正确
在这里插入图片描述
在这里插入图片描述

3.添加BeanShell 后置处理程序,编写脚本

在这里插入图片描述
在这里插入图片描述代码如下(示例):

FileWriter fstream = new FileWriter("D:\\test.csv",true);       
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("token")+"\n"); 
out.close();
fstream.close();

二、复杂示例(多个字段,响应数据为集合类型)

例如:一条结算单,里面包含了多条报销明细,有结算的,未结算的,但是系统页面上显示的是未报销的数据
业务提出需求为:需要导出所有状态的报销数据(结算的,未结算的),导出字段为:金额,结算金额,流程名称,结算状态

1.使用jmeter调试登录接口成功(同上,不在赘述)

2.使用json提取器或者正则表则式提取需要的字段

json提取器中,可以一下提取多个字段,我以提取三个字段为例
在这里插入图片描述注意:多个字段,提取器中需要以英文的 ; 分隔
在这里插入图片描述添加一个调试后置处理,可以查看到json提取器提取三个字段成功
在这里插入图片描述

3.添加BeanShell 后置处理程序,编写脚本

注意点:
1.因为是集合形式,我们需要循环输出,然后需要找到循环的条件表达式,这个值加了调试后置处理就可以看到,由于我取了三个字段,三个字段是一一对应的,即flow_name_matchNr=50;settle_status_matchNr=50 ;amount_matchNr=50 所以取了其中一个。
2.write字段时,通过观察调试的数据可以看到,得到的值是变量名称_index的,所以我们再out.write,get变量时也需要拼接一下index.即 “flow_name_”+i

out.write(vars.get("flow_name_"+i)+",");//逗号表示换行
out.write(vars.get("amount_"+i)+",");//逗号表示换行
out.write(vars.get("settle_status_"+i)+"\n");// \n表示换列

在这里插入图片描述
在这里插入图片描述

代码如下(示例):

FileWriter fstream = new FileWriter("D:\\re.csv",true);
BufferedWriter out=new BufferedWriter(fstream);
num=vars.get("flow_name_matchNr");
for(int i=1;i<=(Integer.parseInt(num));i++){
	//log.info("i="+i);
	//log.info(vars.get("flow_name_"+i));  //查看是否获取到变量
	//log.info(vars.get("settle_status_"+i));
out.write(vars.get("flow_name_"+i)+",");
out.write(vars.get("amount_"+i)+",");
out.write(vars.get("settle_status_"+i)+"\n");
}
out.close();
fstream.close();

总结

以上就是今天要讲的内容,由于自己当时也是踩了一些坑,搜了好几个资料,博客才弄出来了,所以简单的总结一下,给自己留一个笔记,也希望对看到的人有点帮助吧。

  • 13
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值