Postman 获取登录 cookies 动态设置环境变量

一、引入主题

你是否遇到过这种尴尬情况,在使用 PostMan 测试授权登陆的API接口时候,一般都是需要先登录才可以后续业务测试的,否则直接调用接口会报错“请先登录”。

解决这种方式有几种情况,有些API接口请求时,使用token或cookie

  • 在param中设置一个token,比如(http://www.xxx.com/student/list?token=xxx)

  • 在请求的 header 中设置 token 隐式发送。

  • 在 authorization 中设置 auth

2.png

其实不管哪一种,对与我们来说,如果每一个接口用例都去新增一个token或者cookie值太麻烦了,为了解决这种尴尬,常见的做法是 postman 中可以设置环境变量,如下

1.png

然而,我们都知道,登陆的账号不管是 token 还是 cookie 都有一个有效期,有效期过了之后,就不得不在去页面或接口去请求登陆,获取到 token 或 cookie 值,再重新复制、粘贴放在环境变量中,在进行请求API。整个过程来讲,还是有些麻烦。

能不能做一个postman只能登陆,获取到 token 或者 cookie 直接动态的赋值环境变量呢? 答案是可以的!

二、Tests 脚本

PostMan 提供了一个 Tests 功能,它本意是在这里进行一请求、响应数据的断言。在这里可以执行一些 script 脚本,所以可以根据语法来获取登陆接口的 cookie 或 token,然后动态设置环境变量。

PostMan 在安装后,默认在 Collections 中提供了一个 Postman Echo 的集合,里面有许多 demo 脚本,其中就有 Cookies 的参考。

Foxmail20191105054640.png

当然,右手边跟我一起画个龙,也有一个脚本的使用帮助。

Foxmail20191105055118.png

三、实例

改善前

我这里使用 Cookie 请求作为案例。正常请求登陆,获取 sso_token 值

Foxmail20191105055719.png

然后赋值到请求接口,如下,Cookie:sso_token=xxxx

Foxmail20191105055340.png

改善后

1、设置全局环境变量 sso_token

Foxmail20191105060038.png

2、登陆接口,设置 tests 脚本

var t = postman.getResponseCookie('sso_token')
# 等同于
# var tv = _.get(postman.getResponseCookie('sso_token'), 'value')

console.log('toekn:' + t)

# 设置环境变量
postman.setEnvironmentVariable('sso_token', t)

Foxmail20191105060812.png

3、测试授权API接口,设置 Cookie:sso_token={{ss_token}}

Foxmail20191105061012.png

4、搞定,收工。


未经允许请勿转载:程序喵 » Postman 获取登录 cookies 动态设置环境变量

点  赞 (0) 打  赏
分享到: