用途
python-pytest-patterns 是一个针对 Python 的 pytest 测试模式技能,用于指导编写现代、有效的 pytest 测试代码。它通过一组可复用的模式与示例,帮助开发者组织测试结构、管理测试夹具、参数化用例、模拟外部依赖并处理异常与标记。
主要能力
技能内容覆盖以下 pytest 核心主题:
- 基础测试结构:简单断言测试、带描述性名称与 docstring 的测试,以及带自定义消息的断言。
- Fixtures:通过
@pytest.fixture定义夹具,支持按名称注入;支持带 setup 与 teardown 的夹具(使用yield)。 - Fixture 作用域:
function(默认,每个测试)、class(每个测试类)、module(每个测试文件)、session(整个测试运行)。 - Parametrize 参数化:使用
@pytest.mark.parametrize传入多组输入与期望值,也支持多个 parametrize 装饰器叠加生成组合用例。 - 异常测试:使用
pytest.raises捕获异常并检查异常信息,支持match正则匹配。 - Markers 标记:
skip、skipif、xfail以及自定义标记(需在 pytest.ini 中注册)。 - Mocking:使用
unittest.mock的Mock、patch、MagicMock,以及推荐的pytest-mock提供的mocker夹具。 - conftest.py:在
tests/conftest.py中定义共享夹具,供所有测试使用。
使用方式
技能以模式示例的形式呈现,开发者可直接参考其中的代码片段编写测试。示例包括:
- 定义夹具并在测试函数中按名称注入;
- 使用
yield实现夹具的 setup 与 teardown; - 通过
@pytest.mark.parametrize生成多组测试数据; - 使用
pytest.raises验证异常类型与消息; - 使用
@patch或mocker.patch替换外部依赖并断言调用; - 在
conftest.py中集中定义 session 级应用夹具与测试客户端夹具。
技能还提供快速参考命令表,包括:
| 命令 | 说明 |
|---|---|
pytest |
运行所有测试 |
pytest -v |
详细输出 |
pytest -x |
首次失败即停止 |
pytest -k "test_name" |
运行匹配的测试 |
pytest -m slow |
运行带标记的测试 |
pytest --lf |
重跑上次失败的测试 |
pytest --cov=src |
覆盖率报告 |
pytest -n auto |
并行运行(pytest-xdist) |
附加资源
技能附带以下参考文档、脚本与模板:
./references/fixtures-advanced.md:工厂夹具、autouse、conftest 模式./references/mocking-patterns.md:Mock、patch、MagicMock、side_effect./references/async-testing.md:pytest-asyncio 模式./references/coverage-strategies.md:pytest-cov、分支覆盖率、报告./references/integration-testing.md:数据库夹具、API 测试、testcontainers./references/property-testing.md:Hypothesis 框架、策略、收缩./references/test-architecture.md:测试金字塔、组织、隔离策略./scripts/run-tests.sh:以推荐选项运行测试./scripts/generate-conftest.sh:生成 conftest.py 样板./assets/pytest.ini.template:推荐的 pytest 配置./assets/conftest.py.template:常见夹具模式
适用场景
该技能适用于以下场景:
- 编写 Python 单元测试与集成测试;
- 组织与复用测试夹具(fixtures);
- 使用参数化减少重复测试代码;
- 模拟外部 API、数据库或其他依赖;
- 验证异常处理逻辑;
- 通过标记管理测试分类与跳过策略;
- 提升测试覆盖率与测试架构质量。
相关技能
技能中列出的相关技能包括:
python-typing-patterns:类型安全的测试代码python-async-patterns:异步测试模式(pytest-asyncio)python-fastapi-patterns:TestClient、API 测试python-database-patterns:数据库夹具、事务
限制
资料未提供该技能的安装方式、收费模式、平台支持范围或具体版本要求,这些信息暂未提供。