通过上面的学习,大家在做接口测试的时候 如果业务比较多,可以通过上下游传参的方式进行运行。

什么是断言?

在做手动测试的时候, 执行完每一个用例,都用对应的预期结果。当预期结果与实际运行结果一致的时候,这个用例 通过, 当不一致的时候,用例失败。

在postman中 可以将接口测试都保存起来。可以批量执行。添加断言,运行过程中可以自动出测试结果。

断言 是自动化测试过程 中 预期结果与实际结果做对比。


在Postman中 返回结果的结果中, 如果没有添加断言,测试结果中数据为空。
image.png

添加断言

根据接口业务, 发布话题,如果发布成功。接口的检查点

  1. 状态码为200
  2. 返回结果中的 success 值为 true

image.png

根据上面业务,添加对应的断言。

  1. 在此接口的 【Tests】面板上编写代码。 ```javascript // 这里是设置变量代码 var data = pm.response.json()

pm.globals.set(“topicid”,data[“topic_id”])

// 下面是断言的代码

// 1. 添加 状态码为200的断言 pm.test(“状态码必须是200”, function () { pm.response.to.have.status(200); });

// 2. 添加对success值为true的断言 pm.test(“返回结果中的success字段值为true”, function () { var jsonData = pm.response.json(); // 服务器返回结果中的 success 值为 true pm.expect(jsonData[“success”]).to.eql(true); });

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1625991306522-5a05e298-a4a3-4a4c-aeb5-4812f11718b4.png#clientId=u2bd3710e-9a77-4&from=paste&height=419&id=u308cf4aa&margin=%5Bobject%20Object%5D&name=image.png&originHeight=838&originWidth=1238&originalType=binary&ratio=1&size=151371&status=done&style=none&taskId=u30087692-11f0-4ac0-9c2c-a5056c6eb17&width=619)<br />添加断言之后,再次运行,会看到有对应的断言结果。
  2. ---
  3. 练习<br />将修改话题添加对应的断言<br />![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1625991431102-cbb20514-e8ed-4ea6-9700-bdae7f680ecd.png#clientId=u710b29b3-6a88-4&from=paste&height=245&id=u49e6f53f&margin=%5Bobject%20Object%5D&name=image.png&originHeight=489&originWidth=1700&originalType=binary&ratio=1&size=91966&status=done&style=none&taskId=udc82ed6a-3a2a-4ea0-8c4e-07abf8a1211&width=850)<br />根据业务,与上述的断言保持一致。
  4. ```javascript
  5. pm.test("状态码必须是 200", function () {
  6. pm.response.to.have.status(200);
  7. });
  8. pm.test("success对应的值为 true", function () {
  9. var jsonData = pm.response.json();
  10. pm.expect(jsonData["success"]).to.eql(true);
  11. });

image.png

服务器返回结果特别深

以标记单个消息为已读为例, 在前边操作会生成对应的未读消息。
所以在第三个接口 也就是 获取未读和已读消息接口中,未读消息必须要有值,如果没有值,说明前面2个接口执行的时候有问题。

image.png

服务器返回的结果中数据很多,如何添加断言?

根据业务来加断言,hasnot_read_messages 的值一定不能为空。

  1. 拿到 hasnot_read_messages中的id 对应的值
  2. 判断值存在

对应的代码

  1. // 1. 获取整个服务器返回的结果
  2. var data = pm.response.json()
  3. // 2. 获取要取得值 取值的时候,从最外层开始取,如果结果中有 [],要加索引值,索引从0开始
  4. pm.globals.set("replyid",data["data"]["hasnot_read_messages"][0]["id"])
  5. // 下面是添加断言
  6. pm.test("返回结果中hasnot_read_messages的数据id存在", function () {
  7. // 1. 拿到服务器返回的结果
  8. var jsonData = pm.response.json();
  9. // 2. 判断 id 必须存在 to.exist 表示存在
  10. pm.expect(jsonData["data"]["hasnot_read_messages"][0]["id"]).to.exist;
  11. });

更多判断
https://www.chaijs.com/api/bdd/


发布话题和修改话题,在修改话题中添加断言

  • 修改话题的id和发布话题的id保持一致。 ```javascript

// 如果修改话题成功,修改话题返回的id值与发布返回的id值保持一致 // 1 从全局变量中 获取 发布成功时 设置的id

pm.test(“修改话题返回的id值与发布返回的id值保持一致”, function () { var jsonData = pm.response.json(); // jsonData[“topic_id”] 返回的id // pm.globals.get(“topicid”) 设置id pm.expect(jsonData[“topic_id”]).to.eql(pm.globals.get(“topicid”)); });

  1. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1625994523447-4ef5f184-4326-4453-9b79-4d59ac4797d9.png#clientId=u710b29b3-6a88-4&from=paste&height=416&id=uce618fbf&margin=%5Bobject%20Object%5D&name=image.png&originHeight=832&originWidth=1742&originalType=binary&ratio=1&size=194290&status=done&style=none&taskId=uae0894ca-4475-4186-bde5-042019389ef&width=871)
  2. ---
  3. <a name="AdBU6"></a>
  4. ## 作业
  5. 1. get post 的区别
  6. 1. 环境变量和全局变量的区别
  7. 1. 添加断言
  8. ![image.png](https://cdn.nlark.com/yuque/0/2021/png/87080/1625996771940-1b734a89-3d9a-4f3a-8bff-645e018e8e5c.png#clientId=u5126c5fa-76da-4&from=paste&height=267&id=uc36c1cfa&margin=%5Bobject%20Object%5D&name=image.png&originHeight=534&originWidth=1707&originalType=binary&ratio=1&size=118378&status=done&style=none&taskId=uc4492bf2-6b4d-42e7-8b9f-6b15dccfb82&width=853.5)
  9. [homework-7-11.postman_collection.json](https://www.yuque.com/attachments/yuque/0/2021/json/87080/1625996875925-63dd5972-2d13-4f53-a4f3-62130c0ddd1d.json?_lake_card=%7B%22src%22%3A%22https%3A%2F%2Fwww.yuque.com%2Fattachments%2Fyuque%2F0%2F2021%2Fjson%2F87080%2F1625996875925-63dd5972-2d13-4f53-a4f3-62130c0ddd1d.json%22%2C%22name%22%3A%22homework-7-11.postman_collection.json%22%2C%22size%22%3A8934%2C%22type%22%3A%22application%2Fjson%22%2C%22ext%22%3A%22json%22%2C%22status%22%3A%22done%22%2C%22taskId%22%3A%22u12c54ae5-638a-4d29-9008-39a97edc165%22%2C%22taskType%22%3A%22upload%22%2C%22id%22%3A%22ue39629af%22%2C%22card%22%3A%22file%22%7D)
  10. 注意: 下载下来之后,导入到postman 需要自己解决 脚本中的变量,比如 token 的问题。
  11. ```javascript
  12. // 1. 添加状态码为200的断言
  13. pm.test("状态码为200的断言", function () {
  14. pm.response.to.have.status(200);
  15. });
  16. // 2. 添加 success 值为 true 的断言
  17. pm.test(" success 值为 true 的断言", function () {
  18. var jsonData = pm.response.json();
  19. pm.expect(jsonData["success"]).to.eql(true);
  20. });
  21. //3. 服务器返回的结果中marked_msg_id 与 上一个查看到的未读消息的id值保持一致。
  22. pm.test("返回的结果中marked_msg_id 与 上一个查看到的未读消息的id值保持一致", function () {
  23. var jsonData = pm.response.json();
  24. pm.expect(jsonData["marked_msg_id"]).to.eql(pm.globals.get("msgid"));
  25. });