jmeter学习(7)beanshell

[复制链接]
发表于 2026-1-13 07:37:52 | 显示全部楼层 |阅读模式
beanshell preprocessor
发送哀求前实行
beanshell postprocessor
发送哀求前实行
==================================
获取哀求干系信息

在beanshell实行可以,beanshell断言试着不可
  1. import java.util.Random; 
  2. import java.security.MessageDigest;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Date;
  5. import org.apache.commons.lang.StringUtils;
  6. import org.apache.jmeter.config.Arguments;
  7. import org.apache.jmeter.config.Argument;
  8. 获取请求body 
  9. String body = sampler.getArguments().getArgument(0).getValue();
  10. 获取url
  11. String url = sampler.getPath();
  12. 获取响应报文
  13. String response=prev.getResponseDataAsString();
  14. 获取变量
  15. String deviceId = vars.get("deviceId");
  16. 设置变量
  17. vars.put("deviceHttpsToken", xxxx);
复制代码
=======================================
获取request header ,response header
  1. import org.apache.commons.lang.StringUtils;
  2. // 获取请求头、响应头
  3. String a = ctx.getPreviousResult().getRequestHeaders();
  4. String b = ctx.getPreviousResult().getResponseHeaders();
  5. //获取响应报文
  6. String response=prev.getResponseDataAsString();
  7. log.info("================"+a);
  8. log.info("================"+b);
  9. log.info("================"+response);
复制代码
  1. //import org.apache.jmeter.config.Arguments;
  2. import org.apache.commons.lang.StringUtils;
  3. // 获取响应头
  4. String a = ctx.getPreviousResult().getRequestHeaders(); // 获取当前请求header
  5. //获取响应报文
  6. String response = prev.getResponseDataAsString();    //获取当前请求响应结果
  7. log.info("=========="+response);
  8. if(a.contains("jp") ){
  9.         if (response.contains("建物") == false){
  10.                       Failure = true;  
  11.                       FailureMessage =   "断言失败";  
  12.                       return;
  13.         }else{
  14.                 Failure = false;  
  15.                       return;
  16.         }
  17.        
  18. }else if (a.contains("zh-cn") ){
  19.         if (response.contains("My Home") == false){
  20.                       Failure = true;  
  21.                       FailureMessage =   "断言失败";  
  22.                       return;
  23.         }else{
  24.                 Failure = false;  
  25.                       return;
  26.         }
  27. }else if (a.contains("th") ){
  28.         if (response.contains("ครอบครัวของฉัน") == false){
  29.                       Failure = true;  
  30.                       FailureMessage =   "断言失败";  
  31.                       return;
  32.         }else{
  33.                 Failure = false;  
  34.                       return;
  35.         }
  36. }else{
  37.                 Failure = true;  
  38.                       FailureMessage =   "断言失败";  
  39.                       return;
  40. }
复制代码
举例:获取返回数据中的字段
  1. import org.apache.jmeter.config.Arguments;
  2. import com.fasterxml.jackson.databind.JsonNode;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. //获取响应报文
  5. String response=prev.getResponseDataAsString();
  6. ObjectMapper mapper = new ObjectMapper();
  7. JsonNode rootNode=mapper.readTree(response);
  8. retCode=rootNode.get("retCode").asText();
  9. log.info("==========取到的retCode值:"+retCode);
  10. vars.put("code",code);
复制代码
 有列表
  1. import org.apache.jmeter.config.Arguments;
  2. import com.fasterxml.jackson.databind.JsonNode;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. //获取响应报文
  5. String response=prev.getResponseDataAsString();
  6. ObjectMapper mapper = new ObjectMapper();
  7. JsonNode rootNode=mapper.readTree(response);
  8. retCode=rootNode.get("payload").get("list").get(0).get("creator").asText();
  9. log.info("==========取到的retCode值:"+retCode);
  10. //vars.put("code",code);
复制代码
注:list是返回字段不是列表肯定写list
for 循环获取
  1. import org.apache.jmeter.config.Arguments;
  2. import com.fasterxml.jackson.databind.JsonNode;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. //获取响应报文
  5. String response=prev.getResponseDataAsString();
  6. ObjectMapper mapper = new ObjectMapper();
  7. JsonNode rootNode=mapper.readTree(response);
  8. String totalCount=rootNode.get("totalCount").asText();
  9. log.info("==========取到的totalCount值:"+totalCount);
  10. int num = Integer.valueOf(totalCount);
  11. String zhufujian = vars.get("zhufujian");
  12. for(int i =0;i<num;i++){
  13. deviceId=rootNode.get("shareDevs").get(i).get("devInfo").get("deviceId").asText();
  14. //log.info("==========取到的deviceId值:"+deviceId);
  15. if (deviceId.equals(zhufujian)){
  16.         devRoomId1=rootNode.get("shareDevs").get(i).get("devRoomId").asText();
  17.         vars.put("devRoomId1",devRoomId1);
  18.         log.info("==========取到的devRoomId1值:"+devRoomId1);
  19. }else if (deviceId.equals("fujian1")){
  20.         devRoomId2=rootNode.get("shareDevs").get(i).get("devRoomId").asText();
  21.         vars.put("devRoomId2",devRoomId2);
  22.         log.info("==========取到的devRoomId2值:"+devRoomId2);
  23. }else if (deviceId.equals("fujian2")){
  24.         devRoomId3=rootNode.get("shareDevs").get(i).get("devRoomId").asText();
  25.         vars.put("devRoomId3",devRoomId3);
  26.         log.info("==========取到的devRoomId3值:"+devRoomId3);
  27. }else if (deviceId.equals("fujian3")){
  28.         devRoomId4=rootNode.get("shareDevs").get(i).get("devRoomId").asText();
  29.         vars.put("devRoomId4",devRoomId4);
  30.         log.info("==========取到的devRoomId4值:"+devRoomId4);
  31. }else{
  32. }
  33. }
复制代码
获取当前时间beanshell
  1. import java.text.SimpleDateFormat;
  2. import java.util.Calendar;
  3. Calendar calendar = Calendar.getInstance();
  4. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  5. String currentDate = dateFormat.format(calendar.getTime());
  6. vars.put("current_time", currentDate);
复制代码

截取字符串

No=vars.get("No");
log.info("获取到的No:"+No);
No=No.substring(1);
log.info("去掉第一位后的No:"+No);
No1=No.substring(0,3);
log.info("截取出来的001:"+No1);
盘算

import java.math.BigDecimal;
 
BigDecimal a=new BigDecimal("6");
BigDecimal b=new BigDecimal("2");
BigDecimal c=a.add(b);
String c1=c.toString();
log.info("a+b="+c1);
 
BigDecimal c=a.subtract(b);
String c1=c.toString();
log.info("a-b="+c1);
 
BigDecimal c=a.multiply(b);
String c1=c.toString();
log.info("a*b="+c1);
 
BigDecimal c=a.divide(b);
String c1=c.toString();
log.info("a/b="+c1);
import java.math.BigDecimal;
import java.math.RoundingMode;
log.info("=====total======="+vars.get("totalcount"));
BigDecimal a=new BigDecimal("319");
BigDecimal b=new BigDecimal("10");
BigDecimal c=a.divide(b);
String d1;
if(c.toString().contains(".") == true){
    
    BigDecimal c=a.divide(b, RoundingMode.DOWN);
    BigDecimal e=new BigDecimal("1");
    BigDecimal d=c.add(e);
    d1=d.toString();
    log.info("=====d1======="+d1);
    
}else{
    d1=c.toString();
    log.info("===整除==d1======="+d1);
    }
    
vars.put("page",d1);
log.info("=====page======="+vars.get("page"));
检察日志日志

打开日志日志选项,beanshell的log可以在日志日志中检察log.info("deviceId")





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表