SuperAPI AI 工具集

python-pytest-patterns

测试与质量

查看项目

更新于 10-15 10:17

技能介绍

用途

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:数据库夹具、事务

限制

资料未提供该技能的安装方式、收费模式、平台支持范围或具体版本要求,这些信息暂未提供。