Bean Shell常用内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
- log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
- 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
如下接口的Json返回数据,想提取三级级节点“行业开发部”的id:
{
"isSuccess":true,
"errCode":null,
"errMessage":null,
"data":[
{
"id":1,
"parentId":10000,
"name":"技术一部",
"childList":[
{
"id":4,
"parentId":1,
"name":"行业技术部",
"childList":[
{
"id":11,
"parentId":4,
"name":"行业开发部",
"childList":null
},
Object{...}
]
},
Object{...},
Object{...}
]
},
Object{...},
Object{...}
]
}
Beanshell代码写法如下:
//先引入Jar包
import com.alibaba.fastjson.*;
String responseCode = prev.getResponseCode();
//判断接口返回是OK的,如果返回200,则开始取值,否则返回false
if(responseCode.equals("200")){
//获取请求返回值。赋予字符串String 变量
String response = prev.getResponseDataAsString();
// 将string的值转换成成 Jsonobject 对象
JSONObject response_obj= JSON.parseObject(response);
log.info("response_obj==============="+response_obj.toString());
//获取返回值中data下的数组对象
JSONArray dataArr = response_obj.getJSONArray("data");
for(Object dataObj0:dataArr ){
log.info("dataObj0==============="+dataObj0.toString());
// 遍历数组,获取一级部门“技术一部”下的二级部门
String deptName0 = dataObj0.getString("name");
if(deptName0.equals("技术一部")){
JSONArray childListArr0 = dataObj0.getJSONArray("childList");
log.info("childListArr0==============="+childListArr0.toString());
for(Object childListObj1:childListArr0){
log.info("childListObj1==============="+childListObj1.toString());
// 遍历数组,获取二级部门“行业技术部”下的三级部门
String deptName1 = childListObj1.getString("name");
if(deptName1.equals("行业技术部")){
JSONArray childListArr2 = childListObj1.getJSONArray("childList");
log.info("childListArr2==============="+childListArr2.toString());
for(Object childListObj2:childListArr2){
String deptName3 = childListObj2.getString("name");
//遍历数组,获取三级部门“行业开发部”的id
if(deptName3.equals("行业开发部")){
String deptId = childListObj2.getString("id");
//把取到的id放到变量deptId3中
vars.put("deptId3",deptId);
log.info("deptId: ==============="+deptId.toString());
}
}
}
}
}
}
}else{
Failure = true;
}
运行脚本,变量获取成功
获取成功.jpg
网友评论