所谓断言,就是检查接口的返回是否符合预期。
自动化测试脚本,如果断言做的不好,就好比测试用例不写预期结果,因此我认为断言是最重要一部分。
关于如何做好断言,我觉得要做到:要断言的内容一定是唯一的,每个接口都要做断言。
用例:新增一条数据,然后去列表查看新增是否成功。新增数据,如果成功返回数据 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 断言配置如下,取出列表所有数据的 id 看是否存在新增返回的 id
关于 json 断言配置解释,在前面文章已经有介绍。
通过响应断言进行断言预期,只需要判断列表数据中出现 id,配置如下
关于响应断言配置解释,在前面文章已经有介绍。
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 断言读者自己想想如何处理吧!