PostMan:Body中常用断言及注意点(3)
1.状态码:200
1)手写添加状态码
//添加一个状态码
tests[“验证状态码200”]=responseCode.code ===200
//添加多个状态码(添加多个状态时,必须是同一类,即不能同时添加200和304)
tests[“验证状态码200”]=responseCode.code ===200 || responseCode.code ===201
2)PostMan沙箱添加
//添加一个状态码(status Code :code is 200)
pm.test(“验证状态码: 200”, function () {
pm.response.to.have.status(200);
});
//添加多个状态码(status Code :successful Postman request)
pm.test(“验证状态码200”, function () {
pm.expect(pm.response.code).to.be.oneOf([200,201, 202]);
});
2.响应时间
1)手写添加响应时间
// 响应时间:小于多少
tests[“验证响应时间小于2s”]=responseTime < 2000;
//响应时间:在某范围内
tests[“验证响应时间在50ms~2000ms之间”]=_.inRange(responseTime,50,2000);
2)PostMan沙箱添加(response time is less than 200ms)
pm.test(“验证响应时间小于200ms”, function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
3.返回主体(Body)中包含某内容([1]返回主体信息一定要是raw中的原始信息;[2]存在*“转译”**的问题,如raw中"\u6b66\u6c49"代表"武汉",断言中要多添加一个“\”转义,即“\u6b66\u6c49”*
)
1)手写添加
tests[“验证主体断言包含:汇通”]=responseBody.has(“汇通”)
2)PostMan沙箱添加(response body :contains string)
pm.test(“验证body中包含:安心定期寿险B款”, function () {
pm.expect(pm.response.text()).to.include(“安心定期寿险B款”);
});
4.验证主体信息全部一致(即全部报文内容一致:response body:is equal to a string)(报文中双引号要转义如【“transHeader”】转义为【“transHeader”】
pm.test(“验证响应报文”, function () {
pm.response.to.have.body(“{“transHeader”:{“requestTime”:“2021-02-01 10:53:00”,“requestId”:“527601236719831936200212”,“transType”:9080003,“transResultCode”:1}}”);
});
5.//验证头中包含某头域(response header :content-type header check)
pm.test(“验证返回头中包含Access-Control-Allow-Headers头域”, function () {
pm.response.to.have.header(“Access-Control-Allow-Headers”);
});
6.返回主体(body)中某“键值”断言(response body:json value check)
注明:响应JSON报文中字段名路径获取,JSON报文中遇到数组则用[],遇到字典则用.的方式取值
1)报文以“大括号”开头,且断言第一个大括号的键值
报文格式:{
“A”:1,
“C”:3,
“D”:6
}
2)报文以“大括号”开头且包含多个“大括号”,断言第二个大括号的键值(找到键值对应“类”路径)
报文格式:{“a":
{“b”:1,
“c”:2,
“d”:3
}
}
原式:pm.test(“Your test name”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
pm.test(“验证transResultCode返回键值1”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.transHeader.transResultCode).to.eql(1);
});
3)报文以“中括号”开头并且包括多个同类大括号,并且给第一个大括号中的键值添加断言(下标从”0“开始,即jsonData[0].credit_rating)
报文格式:[
{
“A”:1,
“b”:2
},
{
“c”:1,
“d”:2
},
{
“e”:1,
“f”:2
}
]
原式:pm.test(“Your test name”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
pm.test(“第一个债券的credit_rating是长江证券”, function () {
var jsonData = pm.response.json();
console.log(jsonData[0].credit_rating)//打印日志,可以不添加
pm.expect(jsonData[0].credit_rating).to.eql(长江证券);
});
4)报文中大括号内包括中括号,第一个中括号中键值添加断言
报文格式:
{
“transHeader”: {
“requestId”: “8738609531400367”,
“requestTime”: “2021-01-27 15:36:04”,
“transType”: 1003915,
“transResultCode”: 1
},
“transResponse”: {
“extensionObject”: {
“@typeName”: “QueryNoteResult”,
“QueryNoteDetailResult”: [
{
“policyNum”: “2920053”,
“noteCode”: “CO001”,
“noteDes”: “请客户在《新合同》上签名”,
“noteDate”: “2021-02-06”,
“phName”: “张二”,
“inName”: “汇通”,
“mainProductName”: “安心”,
“mainContract”: [
{
“mainConName”: “安心”,
“coverPlan”: null,
“insuredName”: “汇通”
}
],
“additionalContract”: null,
“listId”: 692126,
“feeAmount”: null
},
{
“policyNum”: “2920003”,
“noteCode”: “CO001”,
“noteDes”: “请客户在《新合同》上签名”,
“noteDate”: “2021-02-06”,
“phName”: “张三”,
“inName”: “汇通”,
“mainProductName”: “安心]”,
"mainContract": [
{
"mainConName": "安心",
"coverPlan": null,
"insuredName": "汇通",
}
],
"additionalContract": null,
"listId": 692127,
"feeAmount": null
},
}
]
}
}
}
pm.test(“验证notecode的键值为CO001”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.transResponse.extensionObject.QueryNoteDetailResult[0].noteCode).to.eql(“CO001”);
});
5)大括号{}、中括号[]多层级交错存在(遇到大括号“.”+“类”;遇到中括号就用“[]”下角号标识。。。类似文件路径一样,直到找到要断言的“键”)
报文格式:
pm.test(“单号sumAssured值添加断言”, function () {
var jsonData = pm.response.json();
pm.expect(jsonData.transResponse.extensionObject.QueryNoteDetailResult[3].mainContract[0].sumAssured).to.eql(200000);
});