jmeter-后置处理器-BeanShell PostProcessor-json提取-json值修改-get

这个应该不错 https://zhuanlan.zhihu.com/p/100838926

1、导入json包

 

2、import JSON jar包-时间格式的包(修改值用到了)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
//import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

3、获取系统变量-responsedata 

String response_data = prev.getResponseDataAsString();

4、修改json的某个字段  data.param.ciType.description 修改这个字段

JSONObject jsonObject=JSON.parseObject(response_data);
JSONObject paramJson = (JSONObject)((JSONObject) jsonObject.get("data")).get("param");
JSONObject ciTypeJsom = (JSONObject)paramJson.get("ciType");
ciTypeJsom.put("description",ciTypeJsom.get("description")+"_auto_"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")));

//SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmm");
//ciTypeJsom.put("description",ciTypeJsom.get("description")+"_auto_"+sdf.format(new Date()));
String responseData_a=jsonObject.toString();

5、系统时间-两种获取方法,记得导入包--原来description变为description值加+_auto_+时间

import java.text.SimpleDateFormat;

SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMddHHmm");
ciTypeJsom.put("description",ciTypeJsom.get("description")+"_auto_"+sdf.format(new Date()));
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

ciTypeJsom.put("description",ciTypeJsom.get("description")+"_auto_"+LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmm")));

6、保存变量

vars.put("responseData_b", responseData_a);

 

7、获取json中的字符串-下面的转的


原文链接:https://blog.csdn.net/aduocd/java/article/details/80351719

1. 场景一:获取请求响应中的数据,并保存

import com.alibaba.fastjson.*;  // 引入包。这个包需要先放在:<安装目录>\apache-jmeter-3.2\lib\ext中

// 获取数据

String response = prev.getResponseDataAsString();  // 获取Response

JSONObject responseObj = JSON.parseObject(response);  // 整个Response作为JSON对象

JSONObject resObj = responseObj.getJSONObject("res");  // 获取某一部分对象。即,json串中{}的内容

JSONArray listArray = resObj.getJSONArray("list");  // 获取列表。即,json串中[]的内容

// 保存数据

// 1) 列表

int len = listArray.size();

for(int i=0; i<len; i++){

    temp[i] = listArray.get(i).getString("name");

}

vars.put("names", Arrays.toString(temp));  // 保存到JMeter变量中,vars.put只能保存字符串,因此这里使用了toString()进行转换

// 2) String类型

String id = resObj.get("id");  // 获取对象中某一字符串的内容。

vars.put("id", id);  // 保存到JMeter变量中,后面的组件可以使用

// 3) Integer类型

Integer no = resObj.get("id"); // 获取对象中某一整型的内容。

vars.put("no", no.toString());   // 保存到JMeter变量中,vars.put只能保存字符串,因此这里使用了toString()进行转换

2. 场景二:获取数据库中查询到的数据,并保存

前提:在JDBC Request中已经获取到数据,详见《JDBCRequest的用法》。

select total_cash from t_cash where user_name="tom";

在Result variable name中的值为:result

String cash_new = vars.getObject("result").get(0).get("total_cash").toString();

vars.put("cash_new", cash_new);  // 操作前与此步骤相同,不再赘述。保存的变量名为cash_old

 

failMsg += "\n数据类型:" + prev.getDataType();
failMsg += "\n请求头信息:" + prev.getRequestHeaders();
failMsg += "\n响应头信息:" + prev.getResponseHeaders();
failMsg += "\n内容类型:" + prev.getContentType();
failMsg += "\n媒体类型:" + prev.getMediaType();
failMsg += "\n结果文件名:" + prev.getResultFileName();
failMsg += "\n接口请求结果:" + (prev.isSuccessful() ? "成功," : "失败,");
failMsg += "\n线程名称:" + prev.getThreadName();
failMsg += "\n请求名称:" + prev.getSampleLabel();
failMsg += "\n返回值:" + prev.getResponseCode();
failMsg += "\nmessage:" + prev.getResponseMessage();
failMsg += "\n接口:" + prev.getUrlAsString();
failMsg += "\n响应信息\n" + prev.getResponseDataAsString();

https://blog.csdn.net/qq_40308101/article/details/125545245

 

String response_data = prev.getResponseDataAsString()+ prev.getUrlAsString();
log.info(response_data);
log.info("dfadsfadgdafgafdgdfgdfgafdgfda");

File file=new File("D:\\soft\\jmeter\\apache-jmeter-5.1.1\\bin\\cfltest\\cfl.txt");
FileWriter fw=new FileWriter(file,true);
BufferedWriter out=new BufferedWriter(fw);
        out.write(response_data);
        out.write('\n');
        out.write(response_data);
        out.close();
        fw.close();

 8、对于外面已存在的变量却可以直接通过"${varName}"的方式引用-JSR223

对于外面已存在的变量却可以直接通过"${varName}"的方式引用

 

prev.getResponseDataAsString() 获取返回信息

posted @ 2020-04-12 01:26  依羽杉  阅读(2074)  评论(0编辑  收藏  举报