JMeter BeanShell断言
Bean Shell常用内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
更多方法可参考:org.apache.jmeter.threads.JMeterVariables
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
a) props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
b) props.put("PROP1","1234");
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
更多方法可参考:org.apache.jmeter.samplers.SampleResult
sampler - (Sampler):gives access to the current sampler

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
//获取上一个请求的返回
String jsonString = prev.getResponseDataAsString();
JSONObject responseJson = new JSONObject(jsonString);
String strcode = responseJson.getString("code");
log.info(strcode);
log.info(jsonString);
if (strcode.equals("50003")) {
Failure = false;
log.info("呼叫成功:"+jsonString);
}
else if (strcode.equals("50001")) {
Failure = false;
log.info("暂时无法接听:"+jsonString);
}
else {
Failure =true;
log.info("失败:"+jsonString);
}
另外BeanShell PostProcessor 可打印请求日志
public void writeToLog(){
String logInfo = "\n";
//线程组名 + 采样器名称 "线程组名 / 采样器名称:"+
logInfo = logInfo + prev.getThreadName() + " " + prev.getSampleLabel() + "\n";
//请求内容,如果仅需要url的话,可以使用prev.getUrlAsString()方法 "请求地址:"+
logInfo = logInfo + prev.getSamplerData() + "\n";
//响应状态码 "响应状态码:"+
logInfo =logInfo + prev.getResponseCode() + "\n\n";
//响应内容 "响应内容:"+
logInfo = logInfo + prev.getResponseDataAsString() + "\n";
//写入日志 "写入日志:"+
log.info(logInfo);
}
writeToLog();
版权声明:本文为qq_42846555原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。