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)