后端:按服务运行 pytest
每个服务是独立 uv 项目,在各自目录里运行:测试目录约定
每个服务镜像同样的结构:| 目录 | 内容 |
|---|---|
tests/unit_test/ | 纯单元测试(仓储方法、安全/JWT、编排流程用 fake 驱动) |
tests/functional_test/ | 用 FastAPI TestClient 的进程内接口测试 |
tests/integration_test/ | 跨服务/外部依赖(按需、env 开关) |
当前覆盖
| 服务 | 自动化测试 | PR CI |
|---|---|---|
data_server | 有 | 有 |
agent_server | 有 | 有 |
user_manager | 有 | 有 |
immersive_study_server | 有 | 有 |
collection_server | 有 | 有 |
manager_server | 有 | 尚未配置 |
pytest 输出和当前 PR 的 CI 结果为准。manager_server 在补齐 CI 前必须以本地测试结果作为 PR 证据。
测试里会出现
InsecureKeyLengthWarning(因为测试密钥很短),这是预期的、不影响结果。客户端:flutter test
http 的 MockClient,不需要真实服务器,覆盖:URL/鉴权头拼装、SSE 行解析、JWT 角色解析、模型解码,以及文章列表 widget。
客户端测试流程
表单/功能两层、按平台与功能拆分的用例清单,以及用来逐项跟踪的可视化看板。