在手工测试过程中,编写测试用例,每个用例中都会添加有 期望结果,当测试人员实际运行的时候,会拿实际执行的结果跟用例中定义的预期结果做对比。
如果实际运行结果跟预期结果一致,测试通过。
如果实际运行结果跟预期结果不一致,测试失败。

断言的意思就是 拿实际结果跟预期结果做对比,往往用在自动化测试过程中。

Http 状态码

做接口测试的过程中,每个请求之后,有http返回状态码。

  • 200 服务器响应成功
  • 404 请求地址出错
  • 500 服务器端出错

说出常见10个http状态码。

添加断言

以添加购物车接口为例。
image.png
添加成功之后,主要有两个检查点

  1. code对应值为0
  2. message对应值为 操作成功

根据上面分析的检查点进行断言编写。

  1. 切换到【Tests】中。

image.png

添加如下代码

  1. pm.test("code的值为0", function () {
  2. // 将服务器返回的结果转换为json格式数据,json数据赋变量 jsonData
  3. var jsonData = pm.response.json();
  4. // 添加断言 jsonData中的 code字段值为 0
  5. pm.expect(jsonData.code).to.eql(0);
  6. });
  7. pm.test("message的值为操作成功", function () {
  8. // 将服务器返回的结果转换为json格式数据,json数据赋变量 jsonData
  9. var jsonData = pm.response.json();
  10. // 添加断言 jsonData中的 code字段值为 0
  11. pm.expect(jsonData.message).to.eql("操作成功");
  12. });

运行接口
image.png

复杂类型数据断言

以查询会议室接口为例。每次成功添加一个会议室,在查询接口中会新增1个。
另外,当查询条件为
image.png

  1. {
  2. "city": "北京",
  3. "building": "天安门大厦",
  4. "floor": "18F"
  5. }

接口返回的结果中

  1. {
  2. "errcode": 0,
  3. "errmsg": "ok",
  4. "meetingroom_list": [
  5. {
  6. "meetingroom_id": 3090,
  7. "name": "11会议室",
  8. "capacity": 10,
  9. "city": "北京",
  10. "building": "天安门大厦",
  11. "floor": "18F",
  12. "equipment": [
  13. 1,
  14. 2,
  15. 3
  16. ],
  17. "coordinate": {
  18. "longitude": "113.934528",
  19. "latitude": "22.540503"
  20. },
  21. "need_approval": 0
  22. },
  23. {
  24. "meetingroom_id": 3095,
  25. "name": "863会议室",
  26. "capacity": 10,
  27. "city": "北京",
  28. "building": "天安门大厦",
  29. "floor": "18F",
  30. "equipment": [
  31. 1,
  32. 2,
  33. 3
  34. ],
  35. "coordinate": {
  36. "longitude": "113.934528",
  37. "latitude": "22.540503"
  38. },
  39. "need_approval": 0
  40. }
  41. ]
  42. }

检查点:

  1. 返回结果中每个会议室的 city 为 北京
  2. 每个会议室的 building 为 天安门大厦
  3. 每个会议室的楼层为 18F

需要使用到for循环 对应的语句

  1. pm.test("会议室中的city值为北京", function () {
  2. var jsonData = pm.response.json();
  3. // jsonData.meetingroom_list 为数组结构,存放多个会议室信息
  4. // 使用for循环语法 取到会议室数组中每一个会议室信息,取到每个会议室信息保存到变量meetingroom
  5. for(let meetingroom of jsonData.meetingroom_list){
  6. // meetingroom中的city值为 "beijing"
  7. pm.expect(meetingroom.city).to.eql("北京");
  8. }
  9. });
  10. pm.test("会议室中的building值为天安门大厦", function () {
  11. var jsonData = pm.response.json();
  12. // jsonData.meetingroom_list 为数组结构,存放多个会议室信息
  13. // 使用for循环语法 取到会议室数组中每一个会议室信息,取到每个会议室信息保存到变量meetingroom
  14. for(let meetingroom of jsonData.meetingroom_list){
  15. // meetingroom中的city值为 "beijing"
  16. pm.expect(meetingroom.building).to.eql("天安门大厦");
  17. }
  18. });
  19. pm.test("会议室中的floor值为18F", function () {
  20. var jsonData = pm.response.json();
  21. // jsonData.meetingroom_list 为数组结构,存放多个会议室信息
  22. // 使用for循环语法 取到会议室数组中每一个会议室信息,取到每个会议室信息保存到变量meetingroom
  23. for(let meetingroom of jsonData.meetingroom_list){
  24. // meetingroom中的city值为 "beijing"
  25. pm.expect(meetingroom.floor).to.eql("18F");
  26. }
  27. });

image.png
执行结果

作业

社区系统 API文档:
http://47.100.175.62:3000/api
image.png

  • 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


image.png

  1. 做正常场景测试
  2. 异常场景测试 — 要求使用csv数据文件。
  3. 给正常场景添加1一个断言
    1. 检查点: sucess的值为true

  1. Http,Https 的区别
  2. 10 个Http状态码