Jmeter beanshell 实现-请求生成的参数化数据写入文件

需求:A-B-C 三个功能需要单交易负载测试。其中,功能C的请求入参是功能A、B的出参(返回值),为了能够单独压测C功能,需要把A、B生成的出参保存至csv或txt文件中,作为参数化文件。

实现:1)提取功能A产生的(cookie)需要使用Beanshell Preprocessor插件及cookie管理器;

cookie管理器(一定要勾上 每次迭代都要清理cookies)

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第1张图片

 Beanshell Preprocessor插件:

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第2张图片

 beanshell 代码:

String str=prev.getResponseHeaders(); //获取请求返回头信息
String start = "this.sid=";//定义cookie的开始位置
String end = "; Path=";//定义cookie的结束位置
String cook = str.substring(str.indexOf(start)+start.length(),str.indexOf(end)); //根据起止信息获取cookie
vars.put("cookies",cook);//把cookie信息保存到jmeter变量中,方便后续使用

               提取功能B产生的(studentid)出参字段,需要使用 正规表达式提取器(Regular Exception Extractor);

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第3张图片

           2)将功能A、B产生的数据写入文件操作,使用jmeter beanshell sampler插件。

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第4张图片

beanshell代码:

import java.io.*;
public static void writeExternalfile(){
   String studentId = vars.get("studentId") ;//获取studentId
   String cookies = vars.get("cookies");//获取cookie
   //保存文件名及目录
   File file = new File("C:\\tools\\apache-jmeter-3.2-plugins\\bin\\csh\\playGameVar.txt");
   FileOutputStream fos = null;
   if(!file.exists()){
       file.createNewFile();
       fos = new FileOutputStream(file);
   }else {
       fos = new FileOutputStream(file,true);
   }
   OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
   try {
      osw.write(studentId+","+cookies);//写入studentid与cookie值,并以逗号隔开
      osw.write("\r\n");//换行
      osw.close();//关闭
   } catch (IOException e) {
       e.printStackTrace();
   }
}
  writeExternalfile();//调用写入文件方法

看下执行效果:

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第5张图片

生成的文件及文件内容:

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第6张图片

Jmeter beanshell 实现-请求生成的参数化数据写入文件_第7张图片

你可能感兴趣的:(Jmeter,正则表达式,java,cookie)