【测试开发】【postman】按顺序循环执行接口

postman按顺序循环执行接口

新建接口

Request 001
Request 002
Request 003

接口排序

在这里插入图片描述

  1. 在Request 001的Tests中添加代码
postman.setNextRequest("Request 002");
  1. 在Request 002的Tests中添加代码
postman.setNextRequest("Request 003");
  1. 在Request 003的Tests中添加代码
postman.setNextRequest("Request 001");

或者停止

postman.setNextRequest(null);  // 结束请求链

执行请求集合

  1. 点击Postman界面左侧的你的集合名称。
    在这里插入图片描述

  2. 点击右侧的“Run”按钮,这将打开Collection Runner界面。

<think>我们正在讨论Postman测试接口时遇到的Cookie过期问题。根据引用内容,我们知道Cookie鉴权是在登录接口响应头中返回Set-Cookie,后续请求在请求头中携带该Cookie。Cookie过期意味着之前保存的Cookie失效,需要重新获取。解决方法:1.重新登录获取新的Cookie:当Cookie过期时,最直接的解决方法是再次调用登录接口,获取新的Cookie。在Postman中,我们可以设置一个前置脚本来自动完成这个过程。2.使用Postman的自动管理Cookie功能:Postman默认会管理Cookie,但有时可能需要手动清除后再获取。我们可以检查Postman的Cookie管理设置。3.编写脚本自动更新Cookie:在Postman中,我们可以为集合(Collection)或请求编写预请求脚本(Pre-requestScript)或测试脚本(TestScript)来自动处理Cookie过期问题。具体步骤:方法1:手动重新登录-发送登录请求,从响应头中获取新的Cookie。-将新的Cookie设置到后续请求的请求头中。方法2:使用Postman的Cookie管理器-在Postman中,点击“Send”按钮下方的“Cookies”链接,可以查看和管理当前域下的Cookie。如果发现过期,可以删除,然后重新发送登录请求。方法3:自动化处理(推荐)-我们可以为整个集合(Collection)设置一个前置请求(Pre-requestScript)来确保每次请求前都有有效的Cookie。-思路:先检查当前存储的Cookie是否有效(比如通过一个检查会话的接口),如果无效则调用登录接口获取新的Cookie并存储。示例脚本:在集合的Pre-requestScript中编写如下脚本(需要根据实际情况调整):```javascript//假设我们有一个环境变量来存储cookieconstcookie=pm.environment.get("currentCookie");//如果cookie不存在,则获取新的cookieif(!cookie){//发送登录请求,这里使用pm.sendRequest,注意这是一个异步操作constloginRequest={url:'你的登录接口URL',method:'POST',header:{'Content-Type':'application/json'},body:{mode:'raw',raw:JSON.stringify({username:'test',password:'123456'})}};pm.sendRequest(loginRequest,function(err,response){if(err){console.log(err);}else{//从响应头中获取cookieconstnewCookie=response.headers.get('set-cookie');//将cookie存储到环境变量pm.environment.set("currentCookie",newCookie);}});}//将当前cookie设置到请求头中pm.request.headers.add({key:'Cookie',value:pm.environment.get("currentCookie")});```注意:上述脚本中,由于pm.sendRequest是异步的,而Pre-requestScript是同步执行的,所以上述脚本在发送登录请求时可能不会等待登录请求完成就继续执行了。因此,我们需要调整逻辑,或者确保在发送需要Cookie的请求前已经登录过。改进:我们可以先检查Cookie是否存在,如果存在,则直接使用;如果不存在,则先同步发送登录请求(但实际上pm.sendRequest是异步的,所以不能直接等待)。因此,更合理的做法是:-在登录请求的Tests脚本中,将Cookie保存为环境变量。-然后在其他请求的Pre-requestScript中,直接使用环境变量中的Cookie,并添加到请求头。-当发现请求因Cookie过期返回401时,再触发重新登录。另一种做法:在Tests脚本中检测响应状态码,如果是401,则重新登录并重新发送请求。但Postman的Tests脚本是在请求发送后执行的,所以不能直接用于当前请求的认证。因此,我们可以这样:-为需要认证的请求编写Tests脚本,当收到401响应时,调用登录接口,更新Cookie,然后使用pm.setNextRequest重新发送当前请求(注意:这需要将请求放在一个集合中,并且有顺序)。示例(在需要认证的请求的Tests脚本中):```javascriptif(pm.response.code===401){//发送登录请求pm.sendRequest({url:'你的登录接口URL',method:'POST',header:{'Content-Type':'application/json'},body:{mode:'raw',raw:JSON.stringify({username:'test',password:'123456'})}},function(err,res){if(err){console.log(err);}else{//更新CookieconstnewCookie=res.headers.get('set-cookie');pm.environment.set("currentCookie",newCookie);//重新发送当前请求pm.setNextRequest(pm.info.requestName);}});}```注意:使用pm.setNextRequest会重新运行当前请求,因此要避免死循环(比如登录失败也会导致重新发送,然后又是401,又触发登录)。所以需要设置一个重试次数。综上所述,解决Cookie过期的方法有多种,可以根据具体情况选择手动或自动处理。相关问题:1.如何在Postman中管理环境变量?2.Postman的预请求脚本和测试脚本有什么区别?3.如何避免在Postman中因自动重试导致的死循环?</think>### Postman测试接口Cookie过期的解决方法 在Postman测试接口时遇到Cookie过期问题,本质是客户端保存的会话凭证失效。以下是系统化的解决方案: --- #### **1. 重新获取有效Cookie(推荐)** - **原理**:Cookie过期后需重新登录获取新凭证 - **操作步骤**: 1. 在Postman中重新发送**登录接口**请求 2. 从响应头的 `Set-Cookie` 字段提取新Cookie值 3. 将新Cookie值更新到后续请求的 `Cookie` 请求头 - **示例**: ```http GET /user/profile HTTP/1.1 Host: api.example.com Cookie: session_id=NEW_SESSION_ID_HERE # 替换为最新Cookie ``` --- #### **2. 自动化Cookie管理** 通过Postman脚本自动处理Cookie生命周期: ```javascript // 在登录请求的Tests脚本中 const resCookie = pm.response.headers.get('Set-Cookie'); pm.environment.set("current_cookie", resCookie); // 存储到环境变量 // 在需要认证的请求Pre-request Script中 pm.request.headers.add({ key: "Cookie", value: pm.environment.get("current_cookie") }); ``` **优势**:避免手动复制,自动同步最新Cookie[^1][^2] --- #### **3. 检查Cookie有效期** - 通过浏览器开发者工具或Postman控制台检查Cookie的 `Expires/Max-Age` 属性 - 常见过期场景: - 服务器设置的会话时间过短(如30分钟) - 跨时区服务器时间不同步 - 浏览器隐私模式导致Cookie不持久化 --- #### **4. 切换鉴权方式(需开发配合)** 若频繁遇到Cookie过期问题,可考虑: 1. 改用Token鉴权(JWT等) 2. 在Postman的 `Authorization` 选项卡选择 `Bearer Token` 3. 将登录接口返回的Token填入 `Token` 字段 ```http GET /data HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` **优势**:Token可设置更长有效期且支持跨域[^2] --- #### **5. 验证服务器配置** 检查服务端Cookie配置是否合理: ```yaml # 合理配置示例(Express.js) app.use(session({ secret: 'your_secret', cookie: { maxAge: 3600000, // 1小时有效期 httpOnly: true }, resave: false })); ``` 关键参数:`maxAge`(有效期)、`domain`(作用域)、`secure`(HTTPS传输) --- ### 相关问题 1. 如何通过Postman脚本自动检测Cookie过期并重新登录? 2. Token鉴权相比Cookie鉴权在微服务架构中有哪些优势? 3. 当接口同时支持Cookie和Token鉴权时,Postman如何快速切换测试模式? [^1]: Cookie鉴权通过服务器分配内存管理会话状态,频繁过期会增加服务器压力 [^2]: Token鉴权采用加密验证机制,更适合分布式系统和长期会话场景 [^3]: 接口测试需关注鉴权参数的时效性和完整性设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值