在做接口测试时,在某一些场景下需要添加断言,对接口进行判断。postman在“Tests”中提供了比较多的断言方式来帮助接口测试的断言。
文章中使用的示例接口,是用moco框架模拟的:
[
{
"description":"模拟登陆接口,并且用ponstman测试和断言",
"request":{
"method":"post",
"uri":"/login",
"json":{
"username":"admin",
"password":"admin",
"smsCode":"k8y8F8"
}
},
"response":{
"status":200,
"json":{
"rsCd":"00000",
"rspInf":"操作成功",
"rspType":0,
"data":{
"token":"0acd1240",
"loginTime":1548607006000,
"role":"admin"
},
"V":"456",
"responseTime":"20190128"
}
}
}
]
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
}); // 判断返回响应中的其它字段的值时,同样使用该方法可以实现
或者使用
tests["Status code is 200"] = responseCode.code == 200;
"Status code is 200":此处的文字信息可以任意定义(填写),只要能够方便我们自己辨别是什么意思就可以了
(运行的结果在“Test Results”中查看)
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
"Body matches string":此处的文字信息可以任意定义(填写),只要能够方便我们自己辨别是什么意思就可以了
"string_you_want_to_search":此处填写的时我们需要判断的字段的值
{
"rsCd": "00000",
"rspInf": "操作成功",
"rspType": 0,
"data": {
"token": "0acd1240",
"loginTime": 1548607006000,
"role": "admin"
},
"V": "456",
"responseTime": "20190128"
}
var res = JSON.parse(responseBody); // 先获取到返回的json数据
tests["rsp的值是否为操作成功"] = res.rspInf == "操作成功";
tests["判断data的第二个元素的值是否正确"] = res.data.loginTime === 1548607006000;
或者
pm.test("判断psCd是否=00000", function () {
var res = pm.response.json();
pm.expect(res.rsCd).to.eql("00000"); // 判断rsCd的值是否正确
});
pm.test("判断role是否=admin", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data.role).to.eql("admin"); // "判断data的第三个元素的值是否正确
});
pm.test("返回的json数据中是否有rsCd", function () {
pm.response.to.have.jsonBody("rsCd"); // 判断json数据中是否含有rsCd这个字段
});
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
"Response time is less than 200ms":此处的文字信息可以任意定义(填写),只要能够方便我们自己辨别是什么意思就可以了
var res = JSON.parse(responseBody); // 先获取到返回的json数据
tests["判断loginTime的值的类型是否是number"] = typeof(res.data.loginTime) === "number";
tests["判断rsCd的值的类型师是否是string"] = typeof(res.data.loginTime) == "number";
// 比较常用的集中类型:number、string、object、array、boolean、undefined
tests["判断返回的元素中是否有data"] =responseBody.has("data");
tests["判断返回的元素中是否有rsCd"] =responseBody.has("rsCd");