jmeter性能测试实现接口返回结果的循环利用
一、实现结果
本次实现给一个几千个小区新增房号,每个房号中新增住户
用到计数器、BeanShell 预处理程序、正则表达式提取器、循环控制器
计数器
Starting Value: 开始数值
Maximun value: 最大数值
与每用户独立的跟踪计数器:勾选上后会根据线程组中的循环次数去计数(自己可以去试试加个debug sampler看看)
循环控制器
字面意思循环10次
BeanShell 预处理程序
随机姓名 ,可自行修改
代码:
import java.util.Random;
Random random = new Random();
String[] lastname = new String[]{"王","李","张","刘","陈","杨","黄","赵","吴","周","徐","孙","马","朱","胡","郭","何","林","罗","郑","梁","谢","宋","唐","许","韩","邓","冯","曹","彭","曾","肖","田","董","潘","袁","蔡","蒋","余","于","杜","叶","程","魏","苏","吕","丁","任","卢","姚","沈","钟","姜","崔","谭","陆","范","汪","石","金","韦","贾","夏","付","方","邹","熊","白","孟","秦","邱","侯","江","尹","薛","间","段","龙","黎","史","陶","贺","毛","郝","顾","龚","部","万","覃","武","钱","戴","严","莫","孔","向","常"};
int i = random.nextInt(lastname.length);
String[] firstname = new String[]{"三","四","五","六","团","楼","妍","梁","俊","琪","昕","泽","轩","雨","然","瑶","煜","语","博","铭","彤","悦","阳","涵","诗","乐","锦","必","佳","出","依","皓","馆"};
int j = random.nextInt(firstname.length);
String[] nextname = new String[]{"三","四","五","六","团","楼","妍","梁","俊","琪","昕","泽","轩","雨","然","瑶","煜","语","博","铭","彤","悦","阳","涵","诗","乐","锦","必","佳","出","依","皓","馆"};
int l = random.nextInt(nextname.length);
vars.put("randomName",lastname[i]+firstname[j]+nextname[l]);
(1) 字符串转整型Integer.parseInt()
(2) 整型转字符串String.valueOf()或者toString()
(3) 在beashell中引用变量时可以用${} 也可以用vars.get(String key),需要注意的是双引号使用,获取的数据类型
(4) 在beashell中设置新变量时可以用vars.put(String key,String value)
Bean shell 用for循环和if判断对数据处理
代码:
j = "${num_id}";
//log.info(j);
List list = new ArrayList();
list.add("${room_id_3}");
list.add("${room_id_4}");
list.add("${room_id_5}");
list.add("${room_id_6}");
list.add("${room_id_7}");
//putObject()可以在vars对象中放置Object类型对象
for(int i = 0; i<list.size();i++){
// log.info(list.get(i));
// log.info(i.toString());
b=Integer.parseInt(j);
if(i ==b) {
vars.put("room",list.get(i));}
}
正则表达式提取器
这个可以进行正则表达式在线测试
https://c.runoob.com/front-end/854/
< 记录工作中的知识点 >
有疑问可留言,共同讨论下 ,写的比较简单。