问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Postman中跨环境Cookie提取技巧

创作时间:
作者:
@小白创作中心

Postman中跨环境Cookie提取技巧

引用
CSDN
1.
https://m.blog.csdn.net/zfp123123/article/details/144793633

在使用Postman进行接口自动化测试时,经常会遇到需要从响应头中提取Cookie并设置为环境变量的情况。然而,当面对开发和生产两种不同环境、不同Cookie名称时,如何编写一个通用的脚本自动处理这个问题呢?本文将为你提供一个实用的解决方案。

1.问题背景

在Postman中进行接口自动化测试时,需要从响应头的
Set-Cookie
中提取特定的Cookie值,并将其设置为环境变量以供后续接口使用。存在两种环境(开发和生产),分别对应不同的Cookie名称:
t_iam_dev

t_iam_prod
。初始脚本仅能针对一种名称进行提取,若该名称的Cookie不存在,则提取失败。因此,需要一个能够自动切换Cookie名称并提取成功的脚本。

初始脚本

// 获取响应头中的Set-Cookie
let setCookieHeader = pm.response.headers.get("Set-Cookie");
// 提取Cookie
let tokenRegex = /t_iam_prod=(.*?);/;
let matches = setCookieHeader.match(tokenRegex);
let Cookie = matches ? matches[1] : null;
// Cookie
console.log("Extracted Cookie: " + Cookie);
// 设置环境变量
if (Cookie) {
    pm.environment.set("Cookie", Cookie);
}

实际结果
切换到生产环境后,提取失败。

2.解决方案

// 获取响应头中的Set-Cookie
let setCookieHeader = pm.response.headers.get("Set-Cookie");
// 尝试提取Cookie
let Cookie = null;
// 正则表达式数组,包含两种可能的Set-Cookie名称
let tokenRegexes = [
    /t_iam_dev=(.*?);/,
    /t_iam_prod=(.*?);/
];
// 遍历正则表达式数组,直到提取结果不为空
for (let tokenRegex of tokenRegexes) {
    let matches = setCookieHeader.match(tokenRegex);
    if (matches) {
        Cookie = matches[1];
        break; // 提取成功,退出循环
    }
}
// 打印提取的Cookie
console.log("Extracted Cookie: " + Cookie);
// 设置环境变量
if (Cookie) {
    pm.environment.set("Cookie", Cookie);
} else {
    console.log("No valid Cookie found in the response.");
}

代码解释:

  1. **获取响应头中的
    Set-Cookie
    **:使用
    pm.response.headers.get("Set-Cookie")
    来获取响应头中的
    Set-Cookie
    值。

  2. 正则表达式数组:创建一个包含两种可能的
    Set-Cookie
    名称的正则表达式数组。

  3. 遍历正则表达式数组:使用
    for...of
    循环遍历正则表达式数组,尝试匹配
    Set-Cookie

  4. 提取Cookie:如果匹配成功,则提取Cookie值并退出循环。

  5. 打印提取的Cookie:使用
    console.log
    来打印提取的Cookie值。

  6. 设置环境变量:如果成功提取了Cookie值,使用
    pm.environment.set("Cookie", Cookie)
    将其设置为环境变量。如果没有找到有效的Cookie,则在控制台中打印一条消息。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号