VERIFICATION.md 2.1 KB

验证记录

验证日期:2026-09-10。系统:Windows。Python:3.12.6。使用独立虚拟环境安装 requirements.txt,未修改全局 Python 环境。

自动化验收

python -m pytest -q
30 passed, 1 warning in 16.04s

python -m pip check
No broken requirements found.

唯一警告来自 Starlette TestClient 对 AnyIO BlockingPortal 旧别名的引用,是依赖的弃用提示;本次没有测试失败。代码没有屏蔽该提示。

覆盖项:健康检查和 OpenAPI、CRUD 生命周期与 Location 响应头、q/pinned 组合筛选与默认 10 条限制、标题与查询参数验证、PUT 完整替换、统一 404/422 结构、请求头与环境变量、401 认证挑战响应头、SSE 帧及特殊字符、WebSocket echo/ping/重连、CORS 预检。

HTTPX 使用 MockTransport 验证上游成功、读取超时映射 504、非成功 HTTP 状态映射 502、连接失败映射 502;另测 lifespan 创建并关闭共享客户端。这些上游测试不访问网络。

真实网络验证

另外启动真实 Uvicorn 子进程,通过 localhost TCP 连接调用服务。验证结束后已关闭该子进程。

核验 实测结果
HTTP 健康检查、文档、创建 / 读取 / 删除、Location、pinned 筛选 通过
/private 正确密钥与漏传密钥 200 / 401
/generate 完整结果到达 请求开始后 1.218 秒
三个 SSE token 到达时间 请求开始后 0.411 / 0.813 / 1.199 秒
完整文本与 done 事件 收到:hello。处理完成。,通过
客户端中途关流后再次健康检查 200
真实 WebSocket echo、ping、关闭连接 通过
同时请求四个 /slow?delay=1 全部 200,总耗时 1.054 秒

上面的耗时是这次本机实测值,不是性能保证。SSE 到达时间来自真实 HTTP 流,未使用 TestClient 测量。

已验证的主要版本

依赖 版本
FastAPI 0.141.1
Pydantic 2.13.5
Starlette 0.52.1
Uvicorn 0.52.4
websockets 15.0.1
HTTPX 0.28.1
pytest 9.1.1
AnyIO 4.15.1

所有直接与间接依赖的精确版本见 requirements.txt。