基本概念

什么是断言

断言类似 编写测试用例中的预期结果。当执行的过程中,测试人员会拿实际的运行结果与预期的结果进行对比,预期一样,执行通过,不一样,则失败。

断言就是在代码中 添加上这些预期结果。执行的时候会自动将实际结果与预期结果进行对比。

添加断言

image.png

针对状态码添加断言

  1. pm.response.to.have.status(200); // 通过这句来进行判断
  1. // 断言-- 断言状态码为200 只有当状态码为200的时候,才能获取服务器返回的结果进行上下游传参
  2. pm.test("状态码为200", function () {
  3. pm.response.to.have.status(200);
  4. // 获取服务器返回的结果
  5. var jsondata = pm.response.json();
  6. // 使用postman内置设置全局变量的方法
  7. pm.globals.set("tid",jsondata["topic_id"]);
  8. });

针对响应结果进行断言

image.png

  1. pm.test("响应结果中包含主要字段", function () {
  2. // to.include 包含
  3. pm.expect(pm.response.text()).to.include('"success":true,"topic_id"');
  4. });

响应结果断言主要方式

  1. Response body:Contains String // 响应结果中包含字符串
  2. Response body:Json Value Check // 通过json表达式来断言

动态断言

postman-02 断言 - 图3

image.png

  1. 设置断言,在 编辑话题中设置断言。

image.png

使用 字符串包含来判断

  1. // 动态获取到发布话题中设置的全局变量 tid, 将对应的值放到 tpid中
  2. var tpid = pm.globals.get("tid");
  3. pm.test("服务器返回的结果中一定包含话题id"+tpid, function () {
  4. // 服务器返回的结果中一定包含 话题id
  5. pm.expect(pm.response.text()).to.include(tpid);
  6. });

使用json值来判断

  1. // 对返回结果中的 topic_id 进行断言
  2. // 1. 预期结果中的 topic_id 是动态的, 需要从变量中获取。
  3. // 因为 topic_id 的值被动态的存储在全局变量中,变量为 tid
  4. var tpid = pm.globals.get("tid"); // tpid值
  5. pm.test("服务器返回结果中的topicid一定为"+tpid, function () {
  6. // 服务器实际返回的结果
  7. var jsonData = pm.response.json();
  8. // 服务器实际返回的topic_id的值 jsonData["topic_id"]
  9. pm.expect(jsonData["topic_id"]).to.eql(tpid);
  10. });

  1. pm.test("服务器返回结果中的值为"+pm.globals.get("tid"), function () {
  2. pm.expect(pm.response.json()["topic_id"]).to.eql(pm.globals.get("tid"));
  3. });

面试问题

  1. 如何保证运行接口都是正确?
    1. 添加断言
  2. 都对哪些内容进行断言?
    1. 基本断言主要针对 服务器的状态码进行断言 比如200断言
    2. 也对服务器响应结果中的主要字段进行断言。

针对主要字段断言的方式:
a. 针对非常明确的结果使用string 包含

  1. pm.test("响应结果中包含主要字段", function () {
  2. // to.include 包含
  3. pm.expect(pm.response.text()).to.include('"success":true,"topic_id"');
  4. });

b. 动态的断言,需要从变量中获取结果。

  1. // 动态获取到发布话题中设置的全局变量 tid, 将对应的值放到 tpid中
  2. var tpid = pm.globals.get("tid");
  3. pm.test("服务器返回的结果中一定包含话题id"+tpid, function () {
  4. // 服务器返回的结果中一定包含 话题id
  5. pm.expect(pm.response.text()).to.include(tpid);
  6. });

附件

postman_globals.json
cnode-api.断言.json

思维导图

Postman 接口.svg

作业

  1. 说出10个常见的http响应状态码。

    1. 200 - 请求成功.
    2. 201 - 已创建。成功请求并创建了新的资源
    3. 202 - 已接受。已经接受请求,但未处理完成
    4. 301 - 资源(网页等)被永久转移到其它URL.
    5. 400 - 错误请求,因发送的请求语法错误,服务器无法正常读取。
    6. 401 - 未经授权,需要身份验证后才能获取所请求的内容,类似于403错误.
    7. 不同点是.401错误后,只要正确输入帐号密码,验证即可通过。
    8. 403 - 禁止访问,客户端没有权利访问所请求内容,服务器拒绝本次请求。
    9. 404 - 请求的资源(网页等)不存在.
    10. 500 - 内部服务器错误.
    11. 502 - 无效网关,服务器作为网关且从上游服务器获取到了一个无效的HTTP响应。
  2. get请求与post请求的区别。

  3. http://47.100.175.62:3000/api 所有接口 根据业务使用上下游关联的方式。

day3.postman_collection(1)(2).json