一、引入主题
你是否遇到过这种尴尬情况,在使用 PostMan 测试授权登陆的API接口时候,一般都是需要先登录才可以后续业务测试的,否则直接调用接口会报错“请先登录”。
解决这种方式有几种情况,有些API接口请求时,使用token或cookie
在param中设置一个token,比如(http://www.xxx.com/student/list?token=xxx)
在请求的 header 中设置 token 隐式发送。
在 authorization 中设置 auth
其实不管哪一种,对与我们来说,如果每一个接口用例都去新增一个token或者cookie值太麻烦了,为了解决这种尴尬,常见的做法是 postman 中可以设置环境变量,如下
然而,我们都知道,登陆的账号不管是 token 还是 cookie 都有一个有效期,有效期过了之后,就不得不在去页面或接口去请求登陆,获取到 token 或 cookie 值,再重新复制、粘贴放在环境变量中,在进行请求API。整个过程来讲,还是有些麻烦。
能不能做一个postman只能登陆,获取到 token 或者 cookie 直接动态的赋值环境变量呢? 答案是可以的!
二、Tests 脚本
PostMan 提供了一个 Tests 功能,它本意是在这里进行一请求、响应数据的断言。在这里可以执行一些 script 脚本,所以可以根据语法来获取登陆接口的 cookie 或 token,然后动态设置环境变量。
PostMan 在安装后,默认在 Collections 中提供了一个 Postman Echo
的集合,里面有许多 demo 脚本,其中就有 Cookies 的参考。
当然,右手边跟我一起画个龙,也有一个脚本的使用帮助。
三、实例
改善前
我这里使用 Cookie 请求作为案例。正常请求登陆,获取 sso_token 值
然后赋值到请求接口,如下,Cookie:sso_token=xxxx
改善后
1、设置全局环境变量 sso_token
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)
3、测试授权API接口,设置 Cookie:sso_token={{ss_token}}
4、搞定,收工。
未经允许请勿转载:程序喵 » Postman 获取登录 cookies 动态设置环境变量