SuperAPI AI 工具集

pytest-patterns

测试与质量

查看项目

更新于 10-15 11:42

技能介绍

用途

pytest-patterns 是一个用于掌握 Python pytest 测试的综合技能指南,覆盖从基础测试结构到高级模式,包括 fixtures、参数化、mock、测试组织、覆盖率分析与 CI/CD 集成。资料明确列出适用场景:为 Python 应用(Web 应用、API、CLI 工具、库)编写测试;为新 Python 项目搭建测试基础设施;重构既有测试使其更易维护和高效;实践测试驱动开发(TDD)工作流;为数据库、API 或外部服务测试创建 fixture 模式;组织包含数百或数千个测试的大型测试套件;调试失败测试或提升测试可靠性;搭建持续集成测试流水线;测量和改进代码覆盖率;编写集成、单元或端到端测试;测试异步 Python 代码;模拟外部依赖和服务。

主要能力

pytest 基础与测试发现

pytest 是一个成熟、功能完整的 Python 测试框架,支持简洁的 assert 语句(而非特殊断言方法)、强大的 fixtures、参数化、插件生态、详细报告和自动测试发现。测试发现遵循命名约定:测试文件为 test_*.py 或 *test.py;测试函数以 test 为前缀;测试类以 Test 为前缀(无 init 方法);测试方法在 Test 类内以 test_ 为前缀。

Fixtures(测试夹具)

Fixtures 为测试提供可靠且可重复的固定基线,负责 setup、提供测试数据并执行清理。资料介绍了基本 fixture 模式、fixture 作用域(function 默认、class、module、package、session)、fixture 依赖(fixture 可依赖其他 fixture 形成依赖图)、autouse fixtures(自动运行)、以及 fixture 工厂(返回用于创建测试数据的函数)。

参数化

参数化允许用不同输入运行同一测试。资料涵盖基本参数化、多参数(叠加多个 parametrize 装饰器)、使用 ID 使输出更可读、参数化 fixtures(用 request.param 获取值)、结合参数化与标记,以及间接参数化(通过 fixtures 传递参数)。

Mock 与 Monkeypatching

资料介绍了 pytest 的 monkeypatch fixture(提供自动撤销的安全补丁,可设置/删除环境变量、修改 sys.path)、模拟函数和方法、使用 unittest.mock(Mock、MagicMock、patch、call)、mock 返回值和副作用(side_effect 序列、抛异常),以及 spy 模式(在保留原行为的同时监视函数调用)。

测试组织

包括目录结构建议(src 与 tests 分离,tests 下分 unit、integration、e2e,各含 conftest.py)、conftest.py 共享 fixtures(对其目录及子目录中的所有测试可用,并可注册自定义标记)、标记(slow、integration、skip、skipif、xfail 等及带标记运行命令)、以及用测试类分组相关测试。

覆盖率分析

通过 pytest-cov 运行覆盖率:基本报告、HTML 报告、终端报告(term-missing)、多格式、以及低于阈值时失败(--cov-fail-under)。资料还包括覆盖率配置示例(pytest.ini/setup.cfg 中的 [tool:pytest]、[coverage:run]、[coverage:report] 段落)以及在代码中用 pragma: no cover 排除覆盖。

pytest 配置

资料给出了 pytest.ini 配置示例,涵盖测试发现、输出选项、标记注册、超时、最低 Python 版本、忽略目录和警告过滤等配置项。

使用方式

资料中提供的具体操作命令包括:运行覆盖率时使用 pip install pytest-cov 安装工具,使用 pytest --cov=mypackage tests/ 生成基本报告,pytest --cov=mypackage --cov-report=html tests/ 生成 HTML 报告,--cov-report=term-missing 生成终端报告,--cov-fail-under=80 设置阈值;带标记运行使用 pytest -m slow、pytest -m "not slow"、pytest -m "integration and not slow"、pytest --markers 等命令。资料还包含大量代码示例,涵盖 fixture、参数化、mock、配置等写法。具体安装与运行步骤请以这些资料示例为准。

适用场景与限制

适用场景见上述“用途”部分。关于限制,资料未明确说明该技能的运行环境要求、兼容的 Python 版本范围(仅在配置示例中出现 minversion 与最低版本相关设置)、定价或收费方式,这些信息暂未提供。