jmeter 把响应结果数据写入到指定文件_jmeter输出返回结果到文件-CSDN博客
上面是参考链接
1、如图所示,需要在jmeter中将所有接口中返回的响应数据写入到指定的文件中
2、选择需要的接口右击-添加-后置处理器-正则表达式提取器;
3、在正则表达式提取器界面中配置提取规则,我这边需要提取接口返回的所有数据,
在要检查的响应字段中选择Body(unescaped)
引用名称输入框填写参数用于后期引用,我这边填写result1;
正则表达式输入(.+) 代表提取全部内容
模板输入$1$
匹配数字输入1
4、接口的正则表达式提取配置完成后需要再添加BeanShell取样器,选择线程组右击-添加-取样器-BeanShell取样器。
5、接下来配置BeanShell取样器,直接在脚本区域内容加入如下代码
//指定需要写入到哪个文件,格式:TXT,csv
//D:\\Program Files\\apache-jmeter-5.1.1需要存储写入文件的路径
//text.txt 指定保存的文件
FileWriter file = new FileWriter("D:\\Program Files\\apache-jmeter-5.1.1\\text.txt",true);
//创建一个字符缓存输出流
BufferedWriter out = new BufferedWriter(file);
//写文件内容
//vars.get:获取 jmeter 中的变量值
//"\r\n" 写入文件时可以换行
//result1 为在正则取样器中定义的引用名称,接口截取的响应结果都存储在result1参数中
out.write("接口1"+vars.get("result1")+"\r\n"+"\r\n"+"接口2"+vars.get("result2")+"接口3"+vars.get("result3")+"接口4"+vars.get("result4"));
//关闭写数据流
out.close();
//关闭文件
file.close();
输入文件结果如下
6、在步骤5中,当需要存储的接口返回参数过多时,可以在正则表达式中为参数编号1~100,然后通过for循环来进入写入 代码如下,有多少个接口反馈的参数,则变量 i 就写为多少。
//指定需要写入到哪个文件,格式:TXT,csv
FileWriter file = new FileWriter("D:\\Program Files\\apache-jmeter-5.1.1\\text.txt",true);
//创建一个字符缓存输出流
BufferedWriter out = new BufferedWriter(file);
//写文件内容
//vars.get:获取 jmeter 中的变量值
for(int i=1;i<=4;i++){
out.write("接口"+i+":\r\n"+vars.get("result"+i)+"\r\n\r\n");
}
//关闭写数据流
out.close();
//关闭文件
file.close();
7、如果在使用过程中BeanShell取样器取样器在结果数返回报错500时则就表示 在配置BeanShell取样器中的脚本区域中的java代码编写有问题,需要仔细查看定位编程错误修改后再运行。
8、如果需要在存储接口文件中记录接口路径则可以将接口路径参数化,然后放入for()循环中调用参数 循环写入。
8.1 具体配置如下:点击测试计划右击-添加-配置元件-用户定义的变量
8.2 添加组件后,需要将用户定义的变量组件移动到测试计划路径下
8.3 移动完成后,需要配置变量,将需要的每个接口的值 按照BeanShell取样器中写入的顺序,填写接口路径以及对应的参数名。参数名用统一的后面按顺序编号,如:ULR1、ULR2。
8.4 配置接口路径参数化后,在BeanShell取样器中脚本区域中的out.write()方法中加上vars.get("ULR"+i) i 代表参数后的字数,每次循环加1,可以循环读取接口路径参数的值
//指定需要写入到哪个文件,格式:TXT,csv
FileWriter file = new FileWriter("D:\\Program Files\\apache-jmeter-5.1.1\\text.txt",true);
//创建一个字符缓存输出流
BufferedWriter out = new BufferedWriter(file);
//写文件内容
//vars.get:获取 jmeter 中的变量值
for(int i=1;i<=4;i++){
//vars.get("ULR"+i) 为定义的接口路径参数
out.write(vars.get("ULR"+i)+"接口"+i+":\r\n"+vars.get("result"+i)+"\r\n\r\n");
}
//关闭写数据流
out.close();
//关闭文件
file.close();
结果如图所示,可以将接口路径通过参数形式,依次写入