天天看点

Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)

Jmeter设置全局变量(跨线程组传参数)

参数的作用范围是它所在的线程组,有时候需要跨线程组传递参数。

具体例子:从以下截图接口的(HTTP请求_从新报账系统随机取待稽核数据) 响应信息中提取DJBH字段值,这两个接口的传参要用DJBH

(HTTP请求_从物业系统取数_电费、HTTP请求_从物业系统取数_场租)

Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)
  • 第一步:添加setup线程组,在这个setup线程组里增加一个BeanShell取样器,如下图

       脚本内容:

File file=new File("D:/项目文档/智能稽核项目文档/智能稽核(Java)性能测试/中间数据文件/DJH_DJBH.txt");  //在本机内存中新建一个file对象,用来存储提取的字段值
if(file.exists()&&file.isFile()){  //如果file存在并且是一个文件
    file.delete();  //删除这个文件
}
           
Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)
  • 第二步:在提取字段值的接口添加一个JSON提取器(用来提取字段值),如下图:
Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)
  • 第三步:在提取字段值的接口中添加一个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();  //关闭文件
}
           
Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)
  • 第四步:在需要单据编号为传入参数的接口中添加一个CSV数据文件设置,将上面创建的存储单据编号的文件拿过来用
Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)
  • 第五步:替换参数---${CSV数据文件设置中自己命名的参数名}
Jmeter设置全局变量(跨线程组传参数)Jmeter设置全局变量(跨线程组传参数)