JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:写入信息到jmeber.log文件,使用方法:log.info(“Agoly”);
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
log.info("====BeanShell内置变量====");
log.info("XXXXXXXXXXXXX test11 变量 is "+vars.get("test11"));
log.info("XXXXXXXXXXXXX test22 变量 is "+vars.get("test22"));
String aa = vars.get("test11");
vars.put("test22",aa);
log.info("XXXXXXXXXXXXX 变量 is "+aa);
log.info("XXXXXXXXXXXXX test11 变量 is "+vars.get("test11"));
log.info("XXXXXXXXXXXXX test22 变量 is "+vars.get("test22"));
Props:直接访问jmeter属性,也可以设置属性值
a) props.get("language") :从jmeter.properties中获取language属性值
b) props.put("language","zh_CN"):设置language属性值为zh_CN
log.info("====BeanShell内置变量====");
prop_value = props.get("remote_hosts");
log.info("====props,属性操作===="+prop_value);
props.put("remote_hosts","192.168.137.77:1099,192.168.137.241:1098");
prop_value = props.get("remote_hosts");
log.info("XXXXXXXXXXXXX_properties value is "+prop_value);
ctx:获取运行时信息ctx.getThreadNum(),获取线程号,从0开始
log.info("====BeanShell内置变量====");
//log.info("====ctx,获取线程num====");
threadnum=ctx.getThreadNum();
log.info("====threadnum==== "+threadnum);
SampleResult.setResponseData("====threadnum==== 变量 is "+threadnum,"utf-8");
SampleResult:用于获取/设置sampler的返回值,更多方法参考SampleResult api
a) SampleResult.getResponseData():获取返回结果。
b)SampleResult.setResponseData(data,encoding):设置返回结果
log.info("====BeanShell内置变量====");
//log.info("====ctx,获取线程num====");
threadnum=ctx.getThreadNum();
log.info("====threadnum==== "+threadnum);
SampleResult.setResponseData("====threadnum==== 变量 is "+threadnum,"utf-8");
//SampleResult.setResponseData("====threadnum==== 变量 is "+threadnum);
public int add(int a, int b) {
int sum = a + b;
System.out.println("the sum is :" + sum);
log.info(">>>>>>>>>>>the sum is :" + sum);
return sum;
}
add(1,2)