HTTP API Tools
API 接口管理工具
- YApi
YApi 是一个可本地部署的、打通前后端及 QA 的、可视化的接口管理平台 https://yapi.ymfe.org
https://yapi.ymfe.org/
https://github.com/YMFE/yapi
- 小幺鸡
开源的 api 管理工具
http://www.xiaoyaoji.cn/
- Apifox
- swagger
- Postwoman (hoppscotch)
- Postamn
Postman
Postman 请求生命周期
在 Postman 中,一个完整的 Postman 请求生命周期,除了常规的请求(request)和响应(response),还包括前置请求脚本(pre-request script)和后置测试脚本(tests script)。Postman 包含一个基于 Node.js 的强大运行态(runtime),允许用户在 pre-request script 和 tests 事件中编写 JavaScript 代码。
pre-request script
前置请求脚本(pre-request script)顾名思义就是在请求发送之前执行的脚本。
请求
在测试(tests)中使用脚本
Postman 支持在请求响应后通过测试脚本来验证请求是否符合预期。
示例一:验证响应状态码是否是 200:
1
2
3
pm.test("Status test", function () {
pm.response.to.have.status(200);
});
示例二:验证返回的业务数据(JSON)是否符合预期:
1
2
3
4
pm.test("请求成功!", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.message).to.eql('success');
});
导入 curl 生成请求接口
从 charles 等抓包工具中请求地址复制为 CURL 粘贴至 postman 可直接生成接口请求
变量
变量介绍
在测试过程中,经常要切换测试环境,本地环境、开发环境、测试环境、灰度环境等。
不同的环境一般就是 URI 不一样而已,也就是 IP、端口号会变;接口的路径和值基本是不变的。
Postman 允许用户在发送和接收时 使用变量,以提高工作效率和可读性(不过只能保存字符串类型的值,所以复杂数据类型需要借助于 JSON.stringify()
和 JSON.parse()
来管理)。
Postman 支持在不同的作用域和上下文中使用变量,遵循就近原则,即如果在 Global 和 Environment 中都有变量 name,则会取 Environment 中的 name。
变量应用
URL、Params、Authorization、Headers 和 Body 都可以使用环境变量
变量引用
语法:
变量分类
- Global:全局变量可以在整个工作空间(Workspace)中使用,因为无法控制使用环境和容易造成混淆,应当是不可变的全局常量,谨慎使用。
1
2
pm.globals.set("variable_key", "variable_value");
pm.globals.get("variable_key");
- Collection:集合变量在单个集合(Collection)中可用,往往具备通用的业务绑定属性,例如:商品属性、会员等级、通用秘钥等。
1
2
pm.collectionVariables.set("variable_key", "variable_value");
pm.collectionVariables.get("variable_key");
- Environment:环境变量允许请求适应不同的环境,例如:本地、测试、预演和生产环境,常常用来区别请求地址。
1
2
pm.environment.set("variable_key", "variable_value");
pm.environment.get("variable_key");
- Data: 数据变量来自外部 CSV 和 JSON 文件,当通过 Newman 或 Runner 来运行时才用到。
- Local:局部变量只在单个请求生命周期中可用,运行完成后自动销毁。
1
2
pm.variables.set("variable_key", "variable_value");
pm.variables.get("variable_key");
GUI
- 全局变量
- 环境变量
- Collection 变量
代码设置 Tests
定义全局变量:pm.globals.set("变量名",变量值)
定义环境变量:pm.environment.set("变量名",变量值)
定义集合变量:pm.collectionVariables.set("变量名",变量值)
1
2
3
4
5
pm.globals.set("token1", "token1 value")
pm.environment.set("tokenxx", "tokenxx value")
pm.collectionVariables.set("tokencollect", "token collect value")
环境变量
多环境配置和应用
- 新增环境
- api 接口替换
导入环境配置
下载的配置,是一个 json 串的文件,里面的内容是和网页版的配置相对应的,都是 key-value
全局变量
一般啥时候用全局变量,比如 token 保持登录态就要用全局变量。
- 添加全局变量
- 使用