⼗⼆、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 = ResponseDataAsString();
//将返回值转换为json
JSONObject responseJson = new JSONObject(response);
//从json提取data数组
JSONArray dataList = JSONArray("data");
//遍历所有列表,判断是否存在id
for(i==0;i<dataList.length;i++){
JSONObject item = dataList[i];
("id")==${id}){
Failure = false;
FailureMessage = "存在新增的id";
break;
}
else{
json检查Failure = true;
FailureMessage = "不存在新增的id";
}
}
补充
假如我们执⾏删除数据后,我们需要断⾔不存在于列表响应断⾔取反
json断⾔取反
Beanshell断⾔读者⾃⼰想想如何处理吧!