Postman前置脚本请求间变量传递及执行顺序问题解决
解决Postman前置脚本中异步请求顺序与Token传递问题
问题根源
你的脚本里用pm.sendRequest发起的两个请求是异步并行执行的,Token生成请求并没有优先完成,导致用户创建请求发起时,新的accessToken还没生成,只能用旧值或者空值;同时并行执行可能触发两次Token生成逻辑,导致出现两个不同的Token。
解决方案:用async/await控制请求顺序
Postman支持在前置脚本中使用async/await,把异步请求改成串行执行——先等待Token生成请求完成并拿到有效Token,再发起用户创建请求,确保变量传递正确。
修改后的完整脚本
// 1. 生成随机字符串工具函数 function generateRandomString(length) { const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; let result = ''; for (let i = 0; i < length; i++) { result += chars.charAt(Math.floor(Math.random() * chars.length)); } return result; } // 2. 异步逻辑用async函数包裹,确保顺序执行 (async function() { // 优先生成Bearer Token const tokenRequest = { url: '你的Token接口地址', method: 'POST', header: { 'Content-Type': 'application/json' }, body: { mode: 'raw', raw: JSON.stringify({ // 你的Token请求参数,比如username、password等 username: 'test_user', password: 'test_pass' }) } }; // 等待Token请求完成,获取accessToken const tokenResponse = await pm.sendRequest(tokenRequest); const accessToken = tokenResponse.json().access_token; // 把Token存到环境变量,方便后续使用 pm.environment.set('accessToken', accessToken); // 3. 生成用户ID并发起创建请求(此时已拿到最新Token) const randomUserId = `user_${generateRandomString(8)}`; const userCreateRequest = { url: '你的用户创建接口地址', method: 'POST', header: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${accessToken}` }, body: { mode: 'raw', raw: JSON.stringify({ user_id: randomUserId, // 其他用户参数 name: 'Test User' }) } }; // 发起用户创建请求 await pm.sendRequest(userCreateRequest); // 可选:把创建的用户ID存到环境变量 pm.environment.set('createdUserId', randomUserId); })();
关键修改说明
- 把整个异步逻辑包裹在
async自执行函数里,用await等待每个pm.sendRequest完成,确保Token生成请求先执行完毕 - Token生成后立即存入环境变量,同时直接在用户创建请求的Header中使用最新生成的
accessToken,避免变量传递延迟 - 避免了并行请求导致的重复Token生成问题,确保全程只用一个有效Token
内容的提问来源于stack exchange,提问作者Jyoti Prakash Mallick
相关产品推荐
相关产品推荐

