基本概念
什么是断言
断言类似 编写测试用例中的预期结果。当执行的过程中,测试人员会拿实际的运行结果与预期的结果进行对比,预期一样,执行通过,不一样,则失败。
断言就是在代码中 添加上这些预期结果。执行的时候会自动将实际结果与预期结果进行对比。
添加断言
针对状态码添加断言
pm.response.to.have.status(200); // 通过这句来进行判断
// 断言-- 断言状态码为200 只有当状态码为200的时候,才能获取服务器返回的结果进行上下游传参
pm.test("状态码为200", function () {
pm.response.to.have.status(200);
// 获取服务器返回的结果
var jsondata = pm.response.json();
// 使用postman内置设置全局变量的方法
pm.globals.set("tid",jsondata["topic_id"]);
});
针对响应结果进行断言
pm.test("响应结果中包含主要字段", function () {
// to.include 包含
pm.expect(pm.response.text()).to.include('"success":true,"topic_id"');
});
响应结果断言主要方式
Response body:Contains String // 响应结果中包含字符串
Response body:Json Value Check // 通过json表达式来断言
动态断言
- 设置断言,在 编辑话题中设置断言。
使用 字符串包含来判断
// 动态获取到发布话题中设置的全局变量 tid, 将对应的值放到 tpid中
var tpid = pm.globals.get("tid");
pm.test("服务器返回的结果中一定包含话题id"+tpid, function () {
// 服务器返回的结果中一定包含 话题id
pm.expect(pm.response.text()).to.include(tpid);
});
使用json值来判断
// 对返回结果中的 topic_id 进行断言
// 1. 预期结果中的 topic_id 是动态的, 需要从变量中获取。
// 因为 topic_id 的值被动态的存储在全局变量中,变量为 tid
var tpid = pm.globals.get("tid"); // tpid值
pm.test("服务器返回结果中的topicid一定为"+tpid, function () {
// 服务器实际返回的结果
var jsonData = pm.response.json();
// 服务器实际返回的topic_id的值 jsonData["topic_id"]
pm.expect(jsonData["topic_id"]).to.eql(tpid);
});
pm.test("服务器返回结果中的值为"+pm.globals.get("tid"), function () {
pm.expect(pm.response.json()["topic_id"]).to.eql(pm.globals.get("tid"));
});
面试问题
- 如何保证运行接口都是正确?
- 添加断言
- 都对哪些内容进行断言?
- 基本断言主要针对 服务器的状态码进行断言 比如200断言
- 也对服务器响应结果中的主要字段进行断言。
针对主要字段断言的方式:
a. 针对非常明确的结果使用string 包含
pm.test("响应结果中包含主要字段", function () {
// to.include 包含
pm.expect(pm.response.text()).to.include('"success":true,"topic_id"');
});
b. 动态的断言,需要从变量中获取结果。
// 动态获取到发布话题中设置的全局变量 tid, 将对应的值放到 tpid中
var tpid = pm.globals.get("tid");
pm.test("服务器返回的结果中一定包含话题id"+tpid, function () {
// 服务器返回的结果中一定包含 话题id
pm.expect(pm.response.text()).to.include(tpid);
});
附件
postman_globals.json
cnode-api.断言.json
思维导图
作业
说出10个常见的http响应状态码。
200 - 请求成功.
201 - 已创建。成功请求并创建了新的资源
202 - 已接受。已经接受请求,但未处理完成
301 - 资源(网页等)被永久转移到其它URL.
400 - 错误请求,因发送的请求语法错误,服务器无法正常读取。
401 - 未经授权,需要身份验证后才能获取所请求的内容,类似于403错误.
不同点是.401错误后,只要正确输入帐号密码,验证即可通过。
403 - 禁止访问,客户端没有权利访问所请求内容,服务器拒绝本次请求。
404 - 请求的资源(网页等)不存在.
500 - 内部服务器错误.
502 - 无效网关,服务器作为网关且从上游服务器获取到了一个无效的HTTP响应。
get请求与post请求的区别。
- http://47.100.175.62:3000/api 所有接口 根据业务使用上下游关联的方式。