Python Testing 是一套面向 pytest 的测试编写最佳实践集合,设计目标是帮助 AI 智能体与 LLM 编写可读、可维护且可信赖的测试。文档按重要性分为若干类别,每一类下以规则形式列出具体实践。
用途 该资料用于指导在编写、审查或重构 Python 测试时遵循统一规范,尤其面向由 AI 智能体或 LLM 生成与改写的测试代码。
主要能力与规则
Mocking(关键)
- mock-boundaries:只 mock 外部边界,不 mock 内部逻辑。
- mock-autospec:使用 autospec 保持 mock 与真实签名一致。
- mock-monkeypatch:使用 monkeypatch 处理环境变量和属性。
Test Structure(高)
- struct-aaa-pattern:按 Arrange-Act-Assert 组织测试。
- struct-test-naming:以测试所验证的行为命名测试。
- struct-one-behavior:每个测试只测试一个行为。
- struct-no-logic:不要在测试中保留条件判断与循环。
Fixtures(高)
- fixture-scope:使用能正常工作的最窄 fixture 作用域。
- fixture-conftest:将 fixture 放在最近的 conftest.py 中。
- fixture-factory:使用 factory fixture 生成多样化的测试数据。
Parametrization(中)
- param-parametrize:用 parametrize 替代重复的测试。
- param-ids:为参数化用例提供可读的 id。
使用方式与快捷参考 文档提供结构、fixture、参数化和 mocking 的代码示例。结构模式示例展示如何用 Arrange-Act-Assert 验证过期 token 被拒绝;fixture 模式示例展示默认使用窄作用域,以及用工厂 fixture 生成可变数据;参数化示例展示用 pytest.mark.parametrize 与 pytest.param 的 id 参数区分用例;mocking 示例展示用 mocker.patch 并配合 autospec 模拟外部边界,示例中提到 mocker 需要 pytest-mock 插件,仅使用标准库时可用 unittest.mock.patch 作为装饰器或上下文管理器,并用 monkeypatch 设置环境变量。
适用场景 适用于使用 pytest 编写 Python 单元测试、需要统一测试结构、fixture 组织、参数化去重以及 mock 外部依赖的工程场景。
限制 该资料为最佳实践清单,未说明特定版本兼容性、性能影响或强制约束机制。文档末尾指向 tooling / test-pytest,以了解 pytest 配置、fixture 设置和覆盖率相关内容。其他具体功能、收费与平台信息暂未提供。