Jmeter设置全局变量(跨线程组传参数)
参数的作用范围是它所在的线程组,有时候需要跨线程组传递参数。
具体例子:从以下截图接口的(HTTP请求_从新报账系统随机取待稽核数据) 响应信息中提取DJBH字段值,这两个接口的传参要用DJBH
(HTTP请求_从物业系统取数_电费、HTTP请求_从物业系统取数_场租)
- 第一步:添加setup线程组,在这个setup线程组里增加一个BeanShell取样器,如下图
脚本内容:
File file=new File("D:/项目文档/智能稽核项目文档/智能稽核(Java)性能测试/中间数据文件/DJH_DJBH.txt"); //在本机内存中新建一个file对象,用来存储提取的字段值
if(file.exists()&&file.isFile()){ //如果file存在并且是一个文件
file.delete(); //删除这个文件
}
- 第二步:在提取字段值的接口添加一个JSON提取器(用来提取字段值),如下图:
- 第三步:在提取字段值的接口中添加一个BeanShell后置处理程序,用来写Java脚本,将提取出来的字段值存储在第一步创建的文件中
Java脚本:(以下脚本是将JSON提取器提取出来的单据编号去掉前四位进行存储,因为下一个接口需要的参数值是单据编号去掉前四位的字符串)
//创建一个FileWriter对象 将数据写入file文件末尾 true表示写入末尾,如果不写则是写入文件开头
FileWriter fileWriter = new FileWriter(new File("D:/项目文档/智能稽核项目文档/智能稽核(Java)性能测试/中间数据文件/DJH_DJBH.txt"),true);
BufferedWriter writer = new BufferedWriter(fileWriter); //创建一个缓冲区对象
String DJBH=new String(vars.get("DJH_DJBH"));//将单据编号DJH_DJBH存到DJBH变量中
String new_DJBH = DJBH.substring(4);//去掉获取的单据编号的前四位
writer.append(new_DJBH+"\n"); //将去掉前四位的单据编号DJBH添加到文件里
if(writer != null) { //如果缓冲区对象不为空
writer.close(); //关闭文件
}
if(fileWriter != null) { //如果文件不为空
fileWriter.close(); //关闭文件
}
如果不需要去掉单据编号的前四位,(vars.get() 获取的是jmeter里面的变量)代码如下:
//创建一个FileWriter对象 将数据写入file文件末尾 true表示写入末尾,如果不写则是写入文件开头
FileWriter fileWriter = new FileWriter(new File("D:/项目文档/智能稽核项目文档/智能稽核(Java)性能测试/中间数据文件/DJH_DJBH.txt"),true);
BufferedWriter writer = new BufferedWriter(fileWriter); //创建一个缓冲区对象
writer.append(vars.get("DJH_DJBH")+"\n"); //将单据编号DJH_DJBH添加到文件里
if(writer != null) { //如果缓冲区对象不为空
writer.close(); //关闭文件
}
if(fileWriter != null) { //如果文件不为空
fileWriter.close(); //关闭文件
}
- 第四步:在需要单据编号为传入参数的接口中添加一个CSV数据文件设置,将上面创建的存储单据编号的文件拿过来用
- 第五步:替换参数---${CSV数据文件设置中自己命名的参数名}