十二、Jmeter断言-响应断言、Json断言和Beanshell断言

所谓断言,就是检查接口的返回是否符合预期。

自动化测试脚本,如果断言做的不好,就好比测试用例不写预期结果,因此我认为断言是最重要一部分。

关于如何做好断言,我觉得要做到:要断言的内容一定是唯一的,每个接口都要做断言
举例

用例:新增一条数据,然后去列表查看新增是否成功。新增数据,如果成功返回数据id,如下:

{
    "id": "63c81f8c-ba80-4504-ac1d-66f3774307b2",
    "msg":"ok",
    "code":0
}

列表数据返回如下:

无数据
{
    "data": []
}

有数据
{
    "data": [
        {
            "id": "63c81f8c-ba80-4504-ac1d-66f3774307b2",
            "name": "zhangsan"
        }
    ]
}

如何要断言列表中存在我新增的数据?错误断言:断言data,不管是否存在我们要的数据,返回内容都包含data正确断言:从新增接口提取返回的ID,然后断言ID出现在列表中注意:如果id是自增形式的,建议使用json断言,在这里json断言是首选

实现断言的三种方式
我们首先要把新增接口的id提取出来,用到json提取器,具体配置见下图

 

JSON断言

json断言配置如下,取出列表所有数据的id看是否存在新增返回的id

关于json断言配置解释,在前面文章已经有介绍。

响应断言

通过响应断言进行断言预期,只需要判断列表数据中出现id,配置如下

关于响应断言配置解释,在前面文章已经有介绍。

Beanshell断言

Beanshell断言在实际运用的比较少,除非是结果需要经过处理后进行断言才用得到,本文为了举例,用Beanshell断言实现我们的目的,配置如下

附上脚本源码

import org.json.*;

//获取上一个请求的返回值
String response = prev.getResponseDataAsString();
//将返回值转换为json
JSONObject responseJson = new JSONObject(response);
//从json提取data数组
JSONArray dataList = responseJson.getJSONArray("data");
//遍历所有列表,判断是否存在id

for(i==0;i<dataList.length;i++){
  JSONObject item = dataList[i];
  if(item.get("id")==${id}){
    Failure = false; 
    FailureMessage = "存在新增的id";
    break;
    }
  else{
    Failure = true; 
    FailureMessage = "不存在新增的id";
    }
  }

补充

假如我们执行删除数据后,我们需要断言不存在于列表
响应断言取反

json断言取反

Beanshell断言读者自己想想如何处理吧!

 

posted @ 2020-09-28 08:26  测试充电宝  阅读(372)  评论(0编辑  收藏  举报