提取返回结果中要写入文件的数据
一、先用正则表达式提取返回结果中要写入文件的数据
二、在后置处理器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)
}
}