[ PROMPT_NODE_25164 ]
Resources 实施手册
[ SKILL_DOCUMENTATION ]
# Python 测试模式实施手册
此文件包含该技能引用的详细模式、检查清单和代码示例。
# Python 测试模式
使用 pytest、fixture、mock、参数化和测试驱动开发 (TDD) 实践在 Python 中实施稳健测试策略的综合指南。
## 何时使用此技能
- 为 Python 代码编写单元测试
- 设置测试套件和测试基础设施
- 实施测试驱动开发 (TDD)
- 为 API 和服务创建集成测试
- Mock 外部依赖和服务
- 测试异步代码和并发操作
- 在 CI/CD 中设置持续测试
- 实施基于属性的测试
- 测试数据库操作
- 调试失败的测试
## 核心概念
### 1. 测试类型
- **单元测试**: 隔离测试单个函数/类
- **集成测试**: 测试组件之间的交互
- **功能测试**: 端到端测试完整功能
- **性能测试**: 测量速度和资源使用情况
### 2. 测试结构 (AAA 模式)
- **Arrange (准备)**: 设置测试数据和前提条件
- **Act (执行)**: 执行被测代码
- **Assert (断言)**: 验证结果
### 3. 测试覆盖率
- 测量测试执行了哪些代码
- 识别未测试的代码路径
- 目标是有意义的覆盖率,而不仅仅是高百分比
### 4. 测试隔离
- 测试应该是独立的
- 测试之间没有共享状态
- 每个测试都应在结束后进行清理
## 快速开始
python
# test_example.py
def add(a, b):
return a + b
def test_add():
"""基本测试示例。"""
result = add(2, 3)
assert result == 5
def test_add_negative():
"""测试负数。"""
assert add(-1, 1) == 0
# 运行命令: pytest test_example.py
## 基础模式
### 模式 1: 基本 pytest 测试
python
# test_calculator.py
import pytest
class Calculator:
"""用于测试的简单计算器。"""
def add(self, a: float, b: float) -> float:
return a + b
def subtract(self, a: float, b: float) -> float:
return a - b
def multiply(self, a: float, b: float) -> float:
return a * b
def divide(self, a: float, b: float) -> float:
if b == 0:
raise ValueError("Cannot divide by zero")
return a / b
def test_addition():
"""测试加法。"""
calc = Calculator()
assert calc.add(2, 3) == 5
assert calc.add(-1, 1) == 0
assert calc.add(0, 0) == 0
def test_subt