用途:为 Python 后端(FastAPI)编写与重构 pytest 测试时提供模式参考,适用于服务/仓储单元测试、FastAPI 接口集成测试、fixture 与 conftest 整理、factory_boy 工厂、pytest-asyncio 异步测试、外部服务 mock、参数化测试及覆盖率审计。不适用于前端 React 测试、Playwright E2E、TDD 流程强制或应用代码编写。
主要能力:给出 tests/ 目录结构(conftest.py、unit/、integration/、factories/)与命名约定;通过 pyproject.toml 配置 markers(unit、integration、slow)与 asyncio_mode = "auto",可用 pytest -m unit 等运行子集;conftest 分层级联,根 conftest 提供 engine、db_session、client 等 fixture,子目录补充专用 fixture;fixture 作用域建议默认 function,仅对 engine、事件循环等无状态昂贵资源用 session;提供 auth_headers、authenticated_client、admin_headers 等鉴权 fixture;用 factory_boy 定义 UserFactory、OrderFactory,支持覆盖字段与 build_batch,集成测试可用 SQLAlchemyModelFactory 并在 conftest 中设置 session;集成测试用 httpx.AsyncClient 与 ASGITransport 访问真实 app 加测试数据库,先断言状态码再断言响应体,覆盖 404、409、422、401、403 与分页;mock 策略为 mock 外部 HTTP、邮件、存储、队列、时间,不 mock 数据库与仓储;用 respx 模拟 HTTP;用 @pytest.mark.parametrize 覆盖输入组合并可用 pytest.param 指定 id;覆盖率建议整体 80%、服务层 90%、仓储 70%、路由 80%,配置 fail_under 与 exclude_lines,运行 pytest --cov=app --cov-report=term-missing --cov-report=html --cov-fail-under=80。
使用方式:按资料中的目录与配置组织测试,安装并配置 pytest、pytest-asyncio、httpx、factory_boy、respx、coverage 等依赖后运行上述命令。
限制:资料未提供具体安装命令、版本要求、支持的 Python 版本及性能数据;示例代码需按项目实际模型与依赖调整。