Postman想必不用说太多,是非常流行的API调试工具,广泛用于在开发过程中调试接口,简单方便,而且功能强大,具有全球范围的影响力,是大部分程序猿最常用的接口测试工具。
大部分开发同事的使用步骤都比较常规:
① 贴一个需要测试的请求URL
② 手动去别的地方请求登录接口
③ 拿到认证TOKEN再复制粘贴进去
④ 点击请求
其实②③步骤都是可以省略的。
先来看下Postman的请求生命周期:
在Postman中,一个完整的请求生命周期,除了常规的请求(request)和响应(response),还包括前置请求脚本(pre-request script)和后置测试脚本(tests script)。Postman包含一个基于Node.js的强大运行态(runtime),允许用户在pre-request script和tests事件中编写JavaScript代码。
在官方的介绍中,tests事件脚本常用于根据响应状态码或者数据进行断言,然后输出接口正常与否。官方还贴心的封装了一些代码片段供用户使用,比如请求接口、获取变量、设置变量的方法,我们可以写一个脚本来自动完成上述②③步骤。
在tests事件中写一个脚本:当响应遇到认证不通过时,触发请求登录接口,获取TOKEN并写入变量。
pm.test("Auth", function () {
// 返回Unauthorized时触发
if (pm.response.status === "Unauthorized") {
// 请求体
req = {
"url": pm.variables.get("auth_url"), // 取出变量认证接口
"method": "POST",
"header": {
"Content-Type": "application/json"
},
"body": {
"mode": "raw",
"raw": JSON.stringify({
"username": pm.variables.get("login_username"), // 取出变量认证用户名
"password": pm.variables.get("login_password"), // 取出变量认证密码
})
}
}
// 开始认证请求
pm.sendRequest(req, function (err, response) {
if (response.status === "OK") {
// 请求成功后,把返回的token写入变量
pm.collectionVariables.set("token", response.json().data.token);
}
});
}
});
创建一个集合,把脚本放入Tests选项卡中(认证接口、用户名、密码变量也可以直接写入脚本,推荐写在Variables中便于修改):
在集合的Authorization使用变量token:
这样就完成设置一劳永逸了。以后在这个集合内的所有接口都只需填入url,不需要再手动复制粘贴Token了。
当然前置请求脚本(pre-request script)和后置测试脚本(tests script)的运用不止于此,利用脚本去处理一些重复麻烦的工作,可以大大提升开发测试效率。