[PPJ_07] Postman断言-案例实践
2018-10-07 本文已影响157人
Fighting_001
一、断言简介
通常执行完成测试时,需要对测试结果进行检验,判断返回结果是否符合预期效果,即为断言。在接口测试中一般会根据响应状态码or响应返回的数据进行断言。
断言通俗理解:检验预期值与实际值是否相等or相匹配
预期值 = 实际值 ==> Pass(通过)
预期值 ≠ 实际值 ==> Fail(不通过)
Postman提供了一个测试沙箱(Postman Sandbox),是一个JavaScript执行环境,可通过JS脚本来编写Pre-request Script和Test Script。
- Pre-request Script:预置脚本。可用来修改一些默认参数,在请求发送之前执行。
- Test Script:测试脚本。当接收到响应之后,再执行测试脚本。
二、断言案例实践
案例:
请求URL:https://postman-echo.com/get?uname={{uname}}&pwd={{pwd}}
请求方式:GET
传递参数:uname=test00001; pwd=123456
断言规则
1)响应状态码:200
2)响应内容:返回的uname参数值与定义的一致
3)响应时间:小于0.5s
响应数据分析:
设置断言之前,可先观察请求URL所返回的数据内容和结构,本次若获取uname参数值,则需要归属到args对象中,如:args['uname']
{
"args": {
"uname": "test00001",
"pwd": "123456"
},
"headers": {
"host": "postman-echo.com",
"accept": "*/*",
"accept-encoding": "gzip, deflate",
"cache-control": "no-cache",
"content-type": "application/x-www-form-urlencoded",
"cookie": "sails.sid=s%3AL01AlY9D9KhbDCilImCJmV6yx-S31-bO.fmMAxLtL2yztemp4XCPAWhlwvVYDzxkg44QGIuFND50",
"postman-token": "29de5674-c256-43e5-99b1-d7b2cbf28208",
"user-agent": "PostmanRuntime/7.3.0",
"x-forwarded-port": "443",
"x-forwarded-proto": "https"
},
"url": "https://postman-echo.com/get?uname=test00001&pwd=123456"
}
Pre-request Script
pm.variables.set("uname","test00001"); //设置本地变量:uname=test00001
pm.variables.set("pwd","123456"); //设置本地变量:pwd=123456
Test Script
利用Postman界面右侧的【SINPPETS】区域的常用代码片段,点击某个代码名称,即可添加到左侧【Tests】编辑区,然后进行针对性的调整
//获取本地变量uanme的参数值,赋给变量username存储
var username = pm.variables.get("uname");
//在Postman Console控制台输出username值
console.log(username);
//检验JSON格式的响应数据中uname是否为"test00001"
pm.test("返回uname值 = test00001", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.args['uname']).to.eql(username);
});
//检验是否包含字符串"test00001"
pm.test("包含字符串'test00001'", function () {
pm.expect(pm.response.text()).to.include("test00001");
});
//检验响应时间是否小于0.5s
pm.test("响应时间 < 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
//检验响应的状态码是否为200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
执行结果: