postman通过脚本Tests设置全局cookie
-
需求:每次通过postman发送请求,需要先在页面登录,然后找到application下的cookie,复制出来,放在postman对应的cookie中
-
问题:比较麻烦,通过在postman定义一个登录接口,然后点击登录,将cookie进行设置,后续所有的接口就都有cookie信息了
-
解决:
- 定义登录接口,使用
tests script
设置全局变量CK
,然后cookie使用CK
变量,但是研究了半天发现cookie不能使用变量
var cookie = postman.getResponseCookie("cookieName").value; console.log(cookie); pm.globals.set("CK", cookie);
- 于是转变思路,将cookie放在header中,(cookie和header一样的),选中需要进行
pre-request script
的目录,进行如下操作:
pm.request.headers.add("cookieName=" + pm.globals.get("CK"), "cookie")
-
此时,此目录下的所有请求都会带上
header
信息:cookie: "cookieName={{CK}}"
- 定义登录接口,使用
-
调用登录接口 -> 将返回值中的token信息设置到全局环境变量 -> 在需要使用的目录下的pre-request script下设置,例如:
- 设置
const resp = JSON.parse(responseBody);
pm.globals.set("CK", resp.data.jcCookie);
pm.globals.set("TK", resp.data.token);
- 使用
const tokens = Object.values(pm.globals.values);
const tk = tokens[1].TK.value;
const ck = tokens[1].CK.value;
pm.request.headers.add({
key: "x-yzw-auth-token",
value: tk
})
pm.request.headers.add({
key: "x-yzw-jicai-token",
value: ck
})