#!/usr/bin/env python3 """ 一键跑通测试 1. 本地接口 pytest(21+ 条,不依赖 QiWe 真实 guid) 2. QiWe 真实联调(需 .env 中 QIWEI_TOKEN + QIWEI_GUID) 3. 生成 report.html 用法(先确保 backend 已 pnpm dev): cd backend/tests_python python run_all.py """ from __future__ import annotations import subprocess import sys from pathlib import Path from load_env import load_backend_env ROOT = Path(__file__).resolve().parent def main() -> int: env = load_backend_env() token_ok = bool(env.get('QIWEI_TOKEN')) guid = env.get('QIWEI_GUID', '').strip() room_ids = [x.strip() for x in env.get('QIWEI_ROOM_IDS', '').split(',') if x.strip()] print('=' * 60) print('Lami 接口一键测试') print('=' * 60) print(f' QIWEI_TOKEN: {"已配置" if token_ok else "未配置"}') print(f' QIWEI_GUID: {guid if guid else "未配置(真实 QiWe 联调将跳过)"}') print(f' QIWEI_ROOM_IDS: {len(room_ids)} 个群' if room_ids else ' QIWEI_ROOM_IDS: 未配置') if token_ok and not guid: print() print(' 提示: Token 已生效,但拉群/同步消息还需要设备 GUID。') print(' 请打开 https://manager.qiweapi.com/nodes 复制设备 ID,写入 backend/.env:') print(' QIWEI_GUID=你的设备ID') print(' 然后重新运行: python run_all.py') print('=' * 60) cmd = [ sys.executable, '-m', 'pytest', '-v', '--html=report.html', '--self-contained-html', '-m', 'integration', ] if guid: cmd.extend(['-m', 'integration or qiwei_live']) print('(含 QiWe 真实联调:test_13~test_17,使用 QIWEI_ROOM_IDS 登记群)\n') else: print('(本次仅跑本地集成测试,不含 QiWe 真实数据用例)\n') result = subprocess.run(cmd, cwd=ROOT) print() if result.returncode == 0: print(f'全部通过。报告: {ROOT / "report.html"}') else: print(f'存在失败用例,请查看上方日志。报告: {ROOT / "report.html"}') return result.returncode if __name__ == '__main__': raise SystemExit(main())