jmeter中使用beanshell断言

之前讲了jmeter中beanshell脚本的使用,其实还可以借助beanshell来进行断言,这种断言方式相对响应断言、json断言来说更为灵活,可以自己构造想要断言的内容

先来看一下接口的场景:

接口A是一个新增数据接口,新增成功后,列表中的数据会多出1条,但是这个接口返回内容比较少,只有一个msg信息和状态码。

所以为了更好的断言,我打算每次新增前后都调一下查询接口,获取新增前后,列表中的数据总数,如果前后相差1,则认为新增成功;如果前后相等,则认为接口请求失败

开始尝试了json断言,如下

但是实际运行后,结果如下

所以后来尝试使用 beanshell 断言

import org.json.*;

String responseData = prev.getResponseDataAsString(); //获取请求的返回结果

JSONObject response = new JSONObject(responseData);

//log.info(response.getJSONObject("data").toString());
//log.info(response.getJSONObject("data").get("total").toString());

data = response.get("data").get("total")-1; // 新增成功后的数据总量减去1
//log.info(data.toString());


if (data.equals(${total1}))  //判断新增一条数据后再减去1的值与新增前是否一致
    {
    Failure=false ;  // 如果相等,则断言成功
    FailureMessage = "断言成功";
//    log.info(data.toString());
    } 
else {
    
    Failure=true;  // 如果不相等,则断言失败

    FailureMessage = "断言失败";
//    log.info(data.toString());
    }

 data.equals(${total1}) 是判断data的值与total是否相等;

如果相等,则这个接口是成功的,我们期望这个断言标记为成功

beanshell使用Failure来标记失败,所以这里我们写 Failure=false ,表示不返回失败;

如果不想等,则接口调用失败,我们期望这个断言标记为失败

所以这里我们写 Failure=true ,返回失败;

FailureMessage是自定义的断言信息,当断言失败时,可以打印出结果

这样就断言就写好了,可以参考上述方式,从响应内容中提取想要的字段信息,来和预期结果进行比对。

 

posted @ 2021-08-26 17:15  我是冰霜  阅读(706)  评论(0编辑  收藏  举报