二十、JMeter实战-Bean shell断言

一、JMeter Bean shell断言

什么是beanshell?

  1. Beanshell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的语法;
  2. Beanshell是Java写成的,是一个小型的Java源代码解释器,具有对象脚本的语言特性;
  3. 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

实例:

  1. 首先需要下载org.json的jar包,然后在测试计划中导入该jar包,并在jmeter的lib目录下放入该jar包。

  2. 在测试计划中选择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的返回值有误!";
}

原文地址:https://www.cnblogs.com/wwho/p/14230607.html