阅读 1655

Postman 工作流

Postman 是前端圈主流的接口测试工具,相信很多人都用过,但大部分开发者只用到了最基本的功能,即请求和响应,然而 Postman 提供给开发者的不仅仅是这些,下图是 Postman 的工作流,可以看到,在 request 的前面有前置请求脚本(pre-request script),在 response 的后面有测试脚本(test script),这四个部分合在一起才是一次完整的 Postman 工作流。

workflow

request 和 response 相信大家都会用了,这里主要介绍前置请求脚本和测试脚本的使用方法,以登录接口为例,演示一次 Postman 工作流的完整应用场景。

前置请求脚本(pre-request script)

pre-request script 叫前置请求脚本,顾名思义就是在发送 request 请求之前执行的脚本。那么这个脚本有什么用呢?请看这样一个需求:

在每个请求的参数里面添加一个时间戳字段 timestamp,用于记录当前发送时间。

你可能会在 Postman 里面把这个参数写死,其实可以在每次发送请求的时候动态生成当前时间戳,只需要在 pre-request script 里面添加下面的代码:

pm.environment.set("timestamp", Date.now())
复制代码

这样就会动态生成一个 timestamp 环境变量,在 Postman 的 Params、Headers 和 Body 中都可以通过 {{timestamp}} 来引用了,非常方便。其实 Postman 早就预料到可能会有这种需求,已经帮我们内置了很多变量,例如 {{$timestamp}}{{$randomInt}}${{$randomPhoneNum}} 等系统环境变量,可随时调用。

当然,很多时候,我们还是希望能够自己定义环境变量,例如在登录接口里面,我在 pre-request script 中放了很多测试用的登录账号,随时进行切换,非常方便:

前置请求脚本

设置完 body 环境变量之后,在请求体里面可以用 {{body}} 来获取这个变量了:

请求体

测试脚本(test script)

Postman 内置了一套测试规则,并集成了 tv4 测试框架,方便开发者在收到请求后,对结果进行验证,例如:

// 获取 JSON 响应体
var jsonData = pm.response.json()
// 确保状态码是 200,并且 value 的值是 100
pm.test("value is 100", function () {
    pm.response.to.have.status(200)
    pm.expect(jsonData.value).to.eql(100)
})
复制代码

其实除了测试,在测试脚本里面能干的事情还有很多,例如我们在前置请求脚本里面动态设置了 body 这个环境变量,就需要在这里给删除,否则会永远保留在 Postman 的环境变量中:

// 删除动态创建的 body
postman.clearEnvironmentVariable("body")
复制代码

在登录接口的返回结果中有 accessToken 字段,我们需要保留下来给后续请求使用:

// 从响应体中提取 token 并写入环境变量
var token = jsonData.accessToken
if (token) {
    pm.environment.set("token", token)
}
复制代码

整个脚本的内容如下:

测试脚本

文章分类
前端
文章标签