jmeter中对接口进行循环请求后获取相应数据

1、工作中遇到一个场景就是对某个单一接口进行循环请求,并需要获取每次请求后返回的相应数据;

2、首先就在jmeter对接口相关组件进行配置,需要组件有:循环控制器、CSV数据文件设置、计数器、访问接口、HTTP信息头管理器、正则表达式提取器;BeanShell取样器;这些组件排列方式如图所示:

3、循环控制器:其它组件都在循环控制器下,需要循环访问多少次就配置多少次循环

4、CSV数据文件设置:是用于循环访问接口中从配置文件提取参数时用到的配置组件,文件名:参数文件路径;文件编码:如果有中文则需要选择:UTF-8;变量名:如果是一个参数就输入一个变量名称,如:userID,两个就输入两个名称;如:user,pass 其它配置默认即可。

引用文件配置如下:两种方式手动在txt文件编辑,两个引用tab页隔开,或者通过excel表格配置好后复制过来。不要有空白行。

5、计数器:用于接口访问时给接口编号。Starting value:初始值。递增:每次增加多少个;引用名称:设置引用变量:num

6、除BeanShell取样器是在循环控制器下且放在最后一个,其它的组件就是在访问接口下级进行配置了,信息头管理器的配置不赘述了,该接口下的正则表达式是用来提取接口返回的响应数据配置如下:

引用名称:result{num} 后面BeanShell取样器中响应数据写入文件时需要引用的参数,{num}是计数器,每次循环加1,在BeanShell取样器中,需要用函数来存储和传递${num},不能直接引用

正则表达式:(.+) 表示提取全部相应响应数据

7、BeanShell取样器,着重需要配置该取样器,其位置是处于循环控制器的下级,并在访问接口组件的下方如图所示:

脚本内容:

//指定需要写入到哪个文件,格式:TXT,csv
 
FileWriter file = new FileWriter("D:\\Program Files\\apache-jmeter-5.1.1\\bin\\WedoJB\\text.txt",true);
 
//创建一个字符缓存输出流
 
BufferedWriter out = new BufferedWriter(file);
 
//写入文件内容
 
//vars.get:获取 jmeter 中的变量值
 
//将计数器组件参数 num 通过vars.get函数传递给字符串 count
 String count=vars.get("num");

//通过Integer.parseInt函数将字符串count类型转化为int类型并赋值给countNum
 int countNum=Integer.parseInt(count);
 
//"接口"+countNum+":写入文件每一行记录接口循环数
//vars.get("result"+countNum):引用正则表达式组件中的参数,countNum对应${num}
//\r\n\r\n   表示两次回车换行。
out.write("接口"+countNum+":\r\n"+vars.get("result"+countNum)+"\r\n\r\n");

 
 
//关闭写数据流
 
out.close();
 
//关闭文件
file.close();

配置完成后,写入文件格式如下:

相关推荐
Tsang_GeeChill5 小时前
Jmeter使用Request URL请求接口
jmeter
天堂的恶魔9461 天前
软件测试 —— 性能测试(jmeter)
jmeter
Monee..1 天前
【jmeter】下载及使用教程【mac】
jmeter
Allen Bright1 天前
使用 JMeter 的 Autostop Listener 插件:自动化性能测试的守护者
运维·jmeter·自动化
测试者家园2 天前
JMeter + Grafana +InfluxDB性能监控
软件测试·jmeter·性能测试·grafana·性能监控·质量效能
沉下去,苦磨练!2 天前
influxdb+grafana+jmeter
jmeter·grafana
vip1024p2 天前
全面指南:使用JMeter进行性能压测与性能优化(中间件压测、数据库压测、分布式集群压测、调优)
jmeter·中间件·性能优化
小馋喵知识杂货铺3 天前
JMeter 测试Dubbo 接口
jmeter·dubbo
Feng.Lee3 天前
性能测试实时监听工具Influx+Grafana
测试工具·jmeter·grafana