ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

接口自动化token过期问题解决

接口自动化token过期问题解决 直接跑 combo_02 的8种组合全部返回 code: 0。pytest 中看到的 403 可能是 token 在跑完 combo_0133秒/32个请求后接近过期。建议跑前先登录刷新 token执行 python testcase/xxx/auto_login_test.pycombo_01 跑了 33秒/32个请求token 刚好在这之后过期combo_02 开始就全线 403都返回权限错误Token 是 _load_token() 在 conftest.py 加载时一次性获取的跑完整套用例期间不会刷新。如果 token 有效期较短比如 30 分钟跑完前几组组合后就会失效。每个组合测试开始前等待 2秒。效果combo_01 (33s) → sleep(2s) → combo_02 (17s) → sleep(2s) → combo_03 …登录接口需要租户 header 才能直接调用。Token 是通过 Playwright UI 登录获取的走 登录 SSO有效期由后端 SSO 控制登录响应中未返回过期时间字段。从企业 SSO 的常见配置来看这类 token 一般 30分钟~2小时。你的测试跑了combo_01: 33秒combo_02: 17秒开始403✽间隔太短不太可能是 token 自然过期。更可能是 combo_01 大量请求触发了频率限制后续请求被服务端拦截返回 403。建议跑测试前加个小间隔●Token 有效期是 SSO 服务端控制的客户端无法延长。但可以加一个 自动续期机制每次测试前检查 token 是否有效无效时自动重新登录。通过账号密码登录更新全局 TOKEN直接去读conftest.py文件总结一下 conftest.py 的 Token 自动续期机制核心变更┌───────────────────────────────┬────────────────────────────────────────────────────────────┐✽│ 机制 ↓ │ 说明 │├───────────────────────────────┼────────────────────────────────────────────────────────────┤│ TOKEN_REFRESH_INTERVAL 1200 │ 每 20分钟 自动重新登录刷新 │├───────────────────────────────┼────────────────────────────────────────────────────────────┤│ _get_token() │ 获取 token 时检查是否超时超时自动刷新 │├───────────────────────────────┼────────────────────────────────────────────────────────────┤│ _refresh_token() │ 清除模块缓存强制重新加载 auto_login_test.py 获取新 token │├───────────────────────────────┼────────────────────────────────────────────────────────────┤│ _verify_token() │ 调用轻量接口验证 token 是否有效 │├───────────────────────────────┼────────────────────────────────────────────────────────────┤│ ensure_valid_token() │ 对外暴露的方法测试方法可调用确保 token 有效 │└───────────────────────────────┴────────────────────────────────────────────────────────────┘工作流程测试启动 →首次加载 token↓每个组合测试前 sleep(2s)↓_get_token() 检查: 距上次登录 20分钟├─ 否 →返回缓存 token└─ 是 →自动重新登录刷新 tokenbuild_headers() 现在每次调用都通过 _get_token() 动态获取最新 token不再依赖模块加载时的静态值。**conftest.py 的 token 管理逻辑已优化为三步走阶段1: 验证现有 token├─ 有效 → 直接使用复用缓存✅└─ 无效 → 阶段2├─ 有效 → 直接使用复用缓存✅└─ 无效 → 阶段2阶段2: 刷新 token├─ 成功 → 使用新 token ✅└─ 失败 → 阶段3阶段3: 重新登录└─ 强制调用 auto_login_test.get_token() 重新登录触发时机conftest.py 模块加载时自动执行 _init_token()测试运行前调用 ensure_valid_token()build_headers() 每次请求前调用 _get_token()20分钟内复用缓存
返回列表