JMeter 通过 BeanShell 脚本处理入参和回参

入参:可以通过该方式动态生成入参参数,如时间参数,随机参数等。

操作:右键 HTTP Request - Add - Pre Processor - BeanShell PreProcessor 

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Random;
import java.util.List;
import java.util.ArrayList;

// 当前日期
LocalDate today = LocalDate.now();
String formattedDate = today .format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
// 将参数写入到变量中(当前线程使用)
vars.put("today", formattedDate);
// 取出变量值(默认String)
vars.get("today");

// 生成随机数
int random = new Random().nextInt(100);
// 将参数写入到全局变量中(所有线程共享)
props.put("random ", random );
// 取出全局变量值(默认String)
props.get("random ");

 

回参:可以通过该方式动态遍历复杂的请求结果,实现回参的在下一次请求中使用。

操作:右键 HTTP Request - Add - Post Processor - BeanShell PostProcessor 

import net.minidev.json.JSONObject;
import net.minidev.json.JSONValue;
import net.minidev.json.JSONArray;
import java.util.ArrayList;
import java.util.Random;

jsonStr = prev.getResponseDataAsString();
JSONObject jsonobj = (JSONObject) JSONValue.parse(jsonStr);
if (jsonobj.get("respCode") == 0) {
    JSONArray data = (JSONArray ) jsonobj.get("data");
    
    for(int i=0; i<data.size() ; i++){
        JSONObject obj = (JSONObject) data.get(i);
        if ("code".equals(obj.get("code"))){
            vars.put("name", obj.get("name"));
            break;
        }
    }
}            

 

posted @ 2025-02-21 15:14  learcher  阅读(64)  评论(0)    收藏  举报