在手工测试过程中,编写测试用例,每个用例中都会添加有 期望结果,当测试人员实际运行的时候,会拿实际执行的结果跟用例中定义的预期结果做对比。
如果实际运行结果跟预期结果一致,测试通过。
如果实际运行结果跟预期结果不一致,测试失败。
断言的意思就是 拿实际结果跟预期结果做对比,往往用在自动化测试过程中。
Http 状态码
做接口测试的过程中,每个请求之后,有http返回状态码。
- 200 服务器响应成功
- 404 请求地址出错
- 500 服务器端出错
说出常见10个http状态码。
添加断言
以添加购物车接口为例。
添加成功之后,主要有两个检查点
- code对应值为0
- message对应值为 操作成功
根据上面分析的检查点进行断言编写。
- 切换到【Tests】中。

添加如下代码
pm.test("code的值为0", function () {// 将服务器返回的结果转换为json格式数据,json数据赋变量 jsonDatavar jsonData = pm.response.json();// 添加断言 jsonData中的 code字段值为 0pm.expect(jsonData.code).to.eql(0);});pm.test("message的值为操作成功", function () {// 将服务器返回的结果转换为json格式数据,json数据赋变量 jsonDatavar jsonData = pm.response.json();// 添加断言 jsonData中的 code字段值为 0pm.expect(jsonData.message).to.eql("操作成功");});
运行接口
复杂类型数据断言
以查询会议室接口为例。每次成功添加一个会议室,在查询接口中会新增1个。
另外,当查询条件为
{"city": "北京","building": "天安门大厦","floor": "18F"}
接口返回的结果中
{"errcode": 0,"errmsg": "ok","meetingroom_list": [{"meetingroom_id": 3090,"name": "11会议室","capacity": 10,"city": "北京","building": "天安门大厦","floor": "18F","equipment": [1,2,3],"coordinate": {"longitude": "113.934528","latitude": "22.540503"},"need_approval": 0},{"meetingroom_id": 3095,"name": "863会议室","capacity": 10,"city": "北京","building": "天安门大厦","floor": "18F","equipment": [1,2,3],"coordinate": {"longitude": "113.934528","latitude": "22.540503"},"need_approval": 0}]}
检查点:
- 返回结果中每个会议室的 city 为 北京
- 每个会议室的 building 为 天安门大厦
- 每个会议室的楼层为 18F
需要使用到for循环 对应的语句
pm.test("会议室中的city值为北京", function () {var jsonData = pm.response.json();// jsonData.meetingroom_list 为数组结构,存放多个会议室信息// 使用for循环语法 取到会议室数组中每一个会议室信息,取到每个会议室信息保存到变量meetingroomfor(let meetingroom of jsonData.meetingroom_list){// meetingroom中的city值为 "beijing"pm.expect(meetingroom.city).to.eql("北京");}});pm.test("会议室中的building值为天安门大厦", function () {var jsonData = pm.response.json();// jsonData.meetingroom_list 为数组结构,存放多个会议室信息// 使用for循环语法 取到会议室数组中每一个会议室信息,取到每个会议室信息保存到变量meetingroomfor(let meetingroom of jsonData.meetingroom_list){// meetingroom中的city值为 "beijing"pm.expect(meetingroom.building).to.eql("天安门大厦");}});pm.test("会议室中的floor值为18F", function () {var jsonData = pm.response.json();// jsonData.meetingroom_list 为数组结构,存放多个会议室信息// 使用for循环语法 取到会议室数组中每一个会议室信息,取到每个会议室信息保存到变量meetingroomfor(let meetingroom of jsonData.meetingroom_list){// meetingroom中的city值为 "beijing"pm.expect(meetingroom.floor).to.eql("18F");}});

执行结果
作业
社区系统 API文档:
http://47.100.175.62:3000/api
- accesstoken String 用户的 accessToken
- title String 标题 (标题的字数不能小于10个)
- tab String 目前有(只能使用这四个值中其中一个 ask share job dev)
- content String 主体内容(主体内容不能为空)
accesstoken 值: 619a59ab-c015-4a8b-bd13-8e6bcc8df50a
作业练习答案
Cnode 社区.postman_collection.json
zoye.csv

- 做正常场景测试
- 异常场景测试 — 要求使用csv数据文件。
- 给正常场景添加1一个断言
- 检查点: sucess的值为true
- Http,Https 的区别
- 10 个Http状态码
