一、JMeter Bean shell断言
什么是beanshell?
- Beanshell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的语法;
- Beanshell是Java写成的,是一个小型的Java源代码解释器,具有对象脚本的语言特性;
- Beanshell执行标准的Java语句和表达式;
为什么要用beanshell?
在做接口测试时,对响应数据的校验是非常重要的部分;在使用Jmeter进行接口测试时,比如我们有常用的响应断言,json断言;使用BeanShell断言可以根据实际情况灵活实现所需的断言,当然了,这需要一些代码基础。
Bean Shell常用内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
log:
写入信息到jmeber.log文件,使用方法:log.info(“return success!”);
vars - (JMeterVariables):
操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
- (1)vars.get(String key):从jmeter中获得变量值
- (2)vars.put(String key,String value):数据存到jmeter变量中
更多方法可参考:
https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html
prev - (SampleResult):
获取前面的sample返回的信息,常用方法:
- (1)getResponseDataAsString():获取响应信息
- (2)getResponseCode() :获取响应code
更多方法可参考:
https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html
实例:
-
首先需要下载org.json的jar包,然后在测试计划中导入该jar包,并在jmeter的lib目录下放入该jar包。
-
在测试计划中选择jar包
编写Beanshell脚本,断言code值:
import org.json.*;
//获取上一个请求的返回
String jsonString = prev.getResponseDataAsString();
JSONObject responseJson = new JSONObject(jsonString);
//判断返回值是否和预期一致
if (responseJson.getInt("error_code") != 0) {
//把断言失败置为真,即用例失败,并在结果树中显示FailureMessage
Failure = true;
FailureMessage = "error_code的返回值有误!";
}