用途:为异步 Python 项目编写 pytest 测试提供专家级指导,内容源自一套 387 个测试的 FastAPI 后端测试套件,适合在编写或审查异步测试时启用。
主要能力:覆盖 FastAPI 应用测试、异步数据库操作(PostgreSQL、MySQL 等)测试、pytest 异步 fixture 搭建、数据库连接 mock 对象创建、依赖注入服务测试、DAO 层测试、异步 API 端点测试。
测试组织与命名:建议 tests/ 下按 conftest.py(共享 fixture)、fakes.py(可复用 mock 对象)、test_<module>dao.py、test<module>service.py、test<module>router.py、test<module>dto.py 分层组织;测试函数命名采用 test<what>_<scenario>,并始终使用类型注解。
核心 fixture:app(session 级 FastAPI 实例)、client(同步 TestClient)、async_client(基于 ASGITransport 的 AsyncClient)、event_loop、faker(可配置 locale)。mock 对象包括 FakeRecord(模拟查询结果与 rowcount)、FakeConnection(模拟 execute、execute_many、fetch、fetch_val、fetch_row 及事务)、FakeTransaction 与 FakeTransactionContext。
典型模式:DAO 层用 wrapped 绕过连接装饰器直接测试;异常处理测试验证错误映射为 DAOException 与状态码;Service 层用 Dummy 依赖隔离测试;用 monkeypatch 替换连接获取与依赖;批量操作用 execute_many;FastAPI 端点测试 mock service 层;多返回值按顺序弹出;用 parametrize 覆盖多场景。
最佳实践与限制:所有异步测试需 @pytest.mark.asyncio;遵循 Arrange-Act-Assert;mock 在边界层而非内部实现;校验 SQL 语句与参数数量类型;测试需相互隔离;避免过度 mock、忽略 SQL 校验、不测异常路径、缺少类型注解与命名含糊。运行命令如 pytest tests/test_your_module.py -v、pytest --cov=src --cov-report=html --cov-report=term。资料未提供该技能的安装方式、收费与平台支持信息。