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);

浙公网安备 33010602011771号