提取返回结果中要写入文件的数据

一、先用正则表达式提取返回结果中要写入文件的数据
二、在后置处理器JSR223 PostProcessor 或者BeanShell PostProcessor的Parameters中写入提取的变量名
三、写入如下代码
FileWriter writer;
    try {
           writer = new FileWriter("C:\\2018/YU.TXT",true); //写入的文件路径
           writer.write(args[0]+","+args[1]+","+args[2]+","+args[3]);//提取的变量值
           writer.write("\r\n");//换行
           writer.flush();
           writer.close();
    } catch (IOException e) {
          e.printStackTrace();
    }

提取一个响应参数值

提取多个响应参数值

FileWriter writer;
try{
 writer=new FileWriter("D:\\data\\test.txt",true);
 writer.write(args[0]+","+args[1]);
 writer.write("\r\n");
 writer.flush();
 writer.close();
 
 }catch (IOException e){
  e.printStackTrace();
  }

 

 

 

 

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
FileWriter writer;
String response = prev.getResponseDataAsString();
String bb ="";
if(response.contains("请求成功")){
// JSONObject jb = JSONObject.parseObject(response).getString("");
 try {
 writer = new FileWriter("D:/number.txt",true);
 writer.write(args[0]+"\n");
 writer.flush();
 writer.close();
 } catch (IOException e) {
 e.printStackTrace();
 }
}

 

 

 

 

 

方法二

一、添加后置处理器JSON Extractor
Names of created variable中写入变量名,例如:data
JSON Path expressions 中填入要获取的值,格式如: $.data[0].data二、在后置处理器中写入如下代码:

 

FileWriter writer;
try{
 writer=new FileWriter("D:\\data\\test.txt",true);
 writer.write(args[0]+","+args[1]);
 writer.write("\r\n");
 writer.flush();
 writer.close();
 
 }catch (IOException e){
  e.printStackTrace();
  }

方法三:

JMeter之获取需要的响应数据写入文件
1.添加正则提取表达式(这里不再详细写了)
2.添加后置处理器(BeanShell PostProcessor),并在BeanShell PostProcessor下添加代码
3.但是将代码直接写到beanshell后置处理器中会很快消耗掉jmeter的堆内存,影响测试结果,
 故在压力测试的时候需要把处理方法单独写一个类并打包成jar文件,然后在beanshell中调用(这样能够提升测试工具的性能)。

package kafka;
import java.io.FileWriter;
import java.io.IOException;

public class SaveResponse {
 public static void exeparam(String param,String filename){
  FileWriter writer;
  try{
   writer=new FileWriter(filename,true);
   writer.write(param);
   writer.write("\r\n");
   writer.flush();
   writer.close();
  }catch(IOException e){
   e.printStackTrace();
  }
 }
}

 

4、将上述代码进行打包,然后将打包好的jar包放入jmeter的ext目录下,再进行调用即可
5、在jmeter中的调用方式如下
import org.crazyit.gobang.*;
SaveResponse.exeParam("${pass}", "C:/1111.txt");

 

 

 

方法四:

import com.alibaba.fastjson.JSON;
FileWriter writer;

String aaa = prev.getResponseDataAsString();
 String json1 = JSON.parseObject(aaa).getString("data");//将字符串aaa转换成json对象,并获取json对象中data键所对应的值
//        System.out.println(json1);
        String json2 = JSON.parseObject(json1).getString("data");
  //      log.info(json2);
        vars.put("json2",json2);
      
//        System.out.println(json2);
try{
 writer = new FileWriter("D:/data123.txt",true);
 writer.write(json2);
 writer.write("\n");
 writer.flush();
 writer.close();
}catch(IOException e){
e.printStackTrace();
}

 

fastjson中使用方法:
其中包括三个主要的类:JSON、JSONArray、JSONObject
JSONObject代表json对象,主要是get方法,通过“键:值”对中的“键”来获取相对应的值
1.getString(String key)该方法用于获取json对象中的字符串类型数据
2.getInteger(String key)该方法用于获取json对象中的整数类型的数据
3.Size()该方法判断“键:值”对的个数
4.isEmpty()该方法判断“键:值”对是否为空
JSONArray代表json对象数组
JSON代表JSONArray和JSONObject的转化

JSONObject  json1 = JSON.parseObject(aaa);//将json字符串转换成json对象

 

 

 

 

 

package saveresponse;

import com.alibaba.fastjson.*;

public class json {
 public static void main(String[] args){
  String data="{\"code\":\"200\",\"data\":\"3994A788\",\"message\":\"执行成功\",\"success\":true,\"timestamp\":1587446311249}";
  JSONObject  json1 = JSON.parseObject(data);//将json格式的字符串转换成json对象
  System.out.println(json1);
  String message=json1.getString("message");//获取json对象中message键对应的值
  System.out.println(message);
  String data3=json1.toJSONString();//将json对象转换成json字符串格式
  System.out.println(data3)
    
 }

}

 

posted @ 2020-06-24 16:08  那个谁呢  阅读(254)  评论(0编辑  收藏  举报