SuperAPI AI 工具集

python-testing-patterns

测试与质量

查看项目

更新于 10-15 10:49

技能介绍

Python Testing Patterns 是一份关于在 Python 中实现稳健测试策略的综合指南,主要围绕 pytest、fixtures、mocking、参数化以及测试驱动开发(TDD)实践展开。

一、用途与适用场景 该技能适用于以下情况:为 Python 代码编写单元测试;搭建测试套件与测试基础设施;实施测试驱动开发(TDD);为 API 和服务创建集成测试;mock 外部依赖与服务;测试异步代码与并发操作;在 CI/CD 中设置持续测试;实现属性测试(property-based testing);测试数据库操作;调试失败的测试。

二、核心概念

  1. 测试类型:单元测试(隔离测试单个函数/类)、集成测试(测试组件之间的交互)、功能测试(端到端测试完整功能)、性能测试(测量速度与资源使用)。
  2. 测试结构(AAA 模式):Arrange(准备测试数据与前置条件)、Act(执行被测代码)、Assert(验证结果)。
  3. 测试覆盖率:衡量测试覆盖了哪些代码、识别未测试的代码路径,追求有意义的覆盖率而非单纯的高百分比。
  4. 测试隔离:测试应相互独立、测试之间不共享状态、每个测试应自行清理。

三、主要能力与模式 技能给出了从基础到进阶的十类模式:

  • 模式 1:基础 pytest 测试,包括断言与 pytest.raises 异常断言。
  • 模式 2:使用 fixtures 进行 setup 与 teardown,支持函数级、模块级、会话级作用域。
  • 模式 3:参数化测试,使用 @pytest.mark.parametrize 与 pytest.param 自定义测试 ID。
  • 模式 4:使用 unittest.mock 进行 mocking,包括 Mock、patch、MagicMock 以及装饰器语法。
  • 模式 5:测试异常,包括异常类型、异常消息匹配与异常信息访问。
  • 模式 6:测试异步代码,使用 @pytest.mark.asyncio、asyncio.gather 与异步 fixture。
  • 模式 7:使用 monkeypatch 测试环境变量与对象属性。
  • 模式 8:使用 tmp_path 测试临时文件与目录。
  • 模式 9:自定义 fixtures 与 conftest.py,包括 autouse fixture 与参数化 fixture。
  • 模式 10:使用 hypothesis 进行属性测试,验证如反转两次等于原串、加法交换律等属性。

四、使用方式 技能以代码示例形式展示如何编写测试文件(如 test_example.py、test_calculator.py、test_database.py 等),并说明使用 pytest 运行测试,例如:pytest test_example.py。示例涵盖从简单断言到复杂 mock、异步、属性测试的完整写法。

五、最佳实践

  • 测试组织:建议按 tests/ 目录组织,包含 conftest.py(共享 fixtures)、test_unit/、test_integration/、test_e2e/ 等子目录。
  • 测试命名:使用清晰描述被测内容与预期行为的名称,如 test_user_creation_with_valid_data、test_login_fails_with_invalid_password、test_api_returns_404_for_missing_resource;避免 test_1、test_user、test_function 等模糊命名。
  • 测试标记:使用 @pytest.mark.slow、@pytest.mark.integration 等标记对测试分类。

六、限制 资料中未提供该技能的安装命令、收费方式、价格、平台支持范围或具体效果数据,这些信息暂未提供。