用途:为 Python 项目提供 Pytest 测试模式与规范,帮助编写可维护、以行为为中心的测试。
主要能力:
- Fixture 设计:会话级用于昂贵资源(数据库、服务器),模块级用于共享数据,函数级用于隔离数据,复杂对象用工厂模式;fixture 之间可组合依赖,各层自行清理。
- 覆盖率:覆盖率是行为被执行的证据,而非统一百分比目标;应覆盖变更行为、契约、边界、回归与有意义的失败路径;尊重仓库既有覆盖率门槛,不新增门槛,也不为提升百分比添加低价值测试。
- 属性测试:在可用 Hypothesis 时,用于解析器/序列化器的往返测试、状态机不变量、边界校验(@given(st.from_type(T)))。
- 变异测试:对支付、认证、数据校验等关键代码使用 uv run mutmut run --paths-to-mutate=packages/module/ 与 uv run mutmut results,不设统一变异分数目标。
- 异常处理:默认快速失败,让异常传播;仅在测试错误处理时用 pytest.raises 并匹配消息,如 with pytest.raises(ValueError, match="Invalid email format")。
- 场景模式:异步代码用 @pytest.mark.asyncio、AsyncClient、asyncio.gather(),覆盖超时与重试;CLI 用 typer.testing 的 CliRunner,捕获 Rich 输出并测试 NO_COLOR;数据库用隔离测试库,断言成功提交与错误回滚,并对真实引擎测试迁移。
- 性能:先用 cProfile、pytest-memray 分析再优化,用 pytest-benchmark 防回归。
- Mock:新套件优先 pytest-mock,保留既有 unittest.mock 用法,优先 fake、依赖注入或 monkeypatch。
测试失败心态:测试与实现都可能出错,不要立即改测试去迎合实现,也不要假定实现总是正确,不要批量更新测试;需同时排查生产者/消费者契约、fixture、mock、观测与 CI 条件。
目录结构建议:tests/ 下含 conftest.py、unit/、integration/、e2e/、fixtures/。
限制:资料未提供具体安装命令、版本要求、收费信息或平台支持范围;部分细节需参考其 references 文件。