Jmeter之beanshell
引子:
jmeter支持的beanshell脚本语言,在处理复杂的接口关系较为灵活,支持标准java语句和表达式,另外包括一些脚本名和和语法
使用:
1、函数和循环
// 对java的UNTIL 等可以不用引入 import java.util.List; import java.util.ArrayList; // bean 不支持 泛型 List phoneList=new ArrayList(); // 定义函数 public void addPones(List phoneList){ phoneList.add("13213316700"); phoneList.add("132133167001"); phoneList.add("13213316703"); } addPones(phoneList); // 普通for for(int i = 0;i<phoneList.size();i++){ log.info(phoneList.get(i)); } // foreach for(String tel:phoneList){ log.info("for each:"+tel); }
2、内置对象
/* beanshell 内置对象 log 日志 label 当前取样器脚本名字 FileName 文件名 parameters bsh.args beanshell 上方传入的参数 SampleResult ResponseCode 默认200 ResponseMessage 默认ok IsSuccess true or false ctx JmeterContext 内置对象 vars. 全局变量 vars.get("key") vars.put("key","val") vars.remove("key") vars.putObject("key",new Object()); props ------ java.util.Properties props.get("key") props.put("key","value") */ log.info("label---->"+Label); log.info("filename---"+FileName); // bsh.args 上方传入的值 log.info("bsh.args----"+bsh.args[0]); String test=vars.get("test"); log.info("test----"+test); // vars.put("test","66666666"); String test=vars.get("test"); log.info("test----"+test); // vars.get 取回来的是String vars.put 只能是字符串 vars.put("test_get","999"); int test_get=Integer.parseInt(vars.get("test_get")); log.info("test_get==="+test_get); int test_obj=444; test_obj++; vars.putObject("test_obj1",test_obj); vars.getObject("test_obj1"); log.info("test_obj1---"+test_obj); // ResponseCode ResponseMessage IsSucess 字符串变量 可变 log.info("ResponseCode=======>"+ResponseCode); ResponseCode=400; log.info("ResponseCode=======>"+ResponseCode); log.info("ResponseMessage=======>"+ResponseMessage); ResponseMessage="nimei"; log.info("ResponseMessage=======>"+ResponseMessage); log.info("IsSucess===="+""+IsSuccess+"")
内置对象ctx和prev
import org.apache.jmeter.samplers.SampleResult; // 可以看jmeter的api SampleResult result=ctx.getPreviousResult(); String resCode=result.getResponseCode(); String result_data=result.getResponseDataAsString(); log.info("resCode========="+""+resCode); log.info("result_data======"+result_data); // prev = ctx.getPreviousResult(); jmeter 又做了一层封装 String resData=prev.getResponseDataAsString(); log.info("prev==="+resData);