1.什么是bean Shell
BeanShell是一种脚本语言,一种完全符合java语法的java脚本语言,并且又拥有自己的一些语法和方法,beanShell是一种松散类型的脚本语言(这点和JS类似)。
2.Bean Shell常用的内置变量
JMeter在它的bean shell中内置了一些变量,我们可以通过这些变量与JMeter交互:
1)log:写入信息到jmeter.log文件
使用方法如log.info("This is log info");
2)vars:操作jmeter变量,方便我们操作JMeter
常用方法:
a).vars.get(String key):从JMeter中获取变量。
b).vars.put(String key,String value):数据存在JMeter变量中。
更新信息可参考:org.apache.jmeter.threads.JMeterVariables。
3)props:操作JMeter属性,用来获取JMeter的属性
使用方法:
a).props.get("aa");
b).props.put("aa","test");
4)prev:获取当前页面的采样器返回的信息
常用方法:
a).getResponseDataAsString():获取响应信息。
b).getResponseCode():返回响应的code。
更新信息可参考:org.apache.jmeter.samplers.SampleResult
5)ctx:该变量引用了当前线程的上下文,使用方法可以参考:org.apache.jmeter.threads.JMeterContext
3.JMeter中Bean Shell断言实例
1)在http请求的子节点添加Bean Shell断言来判断响应的值,使用Failure来标识断言失败,使用FailureMessage来标识断言失败的原因:
//获取上一个请求的响应值 String response = prev.getResponseDataAsString(); //将响应值的字符串类型转换为JSONObject类型 JSONObject jsonObject = new JSONObject(response); //获取responseMessage的值 String message = jsonObject.getString("responseMessage"); if(!message.equals("success")){ Failure = true; FailureMessage = "message不等于success"; return; } String title = jsonObject.getJsonObject("data").getString("title"); if("".equals(title)){ Failure = true; FailureMessage = "title为空"; return; }