一、基础测试框架选择与安装
标准测试框架 - unittest:
Python内置框架,无需额外安装,适合基础单元测试。示例如下:
```python
import unittest
class CalculatorTest(unittest.TestCase):
def test_add(self):
calc = Calculator()
self.assertEqual(calc.add(2, 3), 5)
if __name__ == '__main__':
unittest.main()
```
- pytest:第三方框架,语法简洁且功能强大(如参数化测试、自动报告生成)。安装方法:
```bash
pip install pytest
```
示例:
```python
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
assert add(-1, 1) == 0
```
运行测试:
```bash
pytest test_sample.py
```
其他工具 - mock:
用于模拟对象,避免依赖外部资源。安装后通过`pip install mock`使用。
- coverage:统计测试覆盖率。安装方法:`pip install coverage`,与`pytest`结合使用。
二、测试用例编写规范
基本结构 - 测试函数以`test_`开头,使用`assert`语句验证结果。例如:
```python
def test_add():
assert add(2, 3) == 5
```
- 参数化测试:使用`@pytest.mark.parametrize`传入多组数据。
测试夹具(Fixtures)
- 用于测试前准备和清理工作,避免重复代码。例如:
```python
@pytest.fixture
def test_data():
return {'username': 'testuser', 'password': '123456'}
def test_login(test_data):
assert test_data['username'] == 'testuser'
```
- 作用域:函数参数化时自动调用,类方法需使用`@pytest.fixture(scope="class")`。
三、进阶测试技术
回归测试
- 保存基准测试用例集,每次代码更新后自动运行,及时发现功能异常。例如:
```bash
pytest -v -v 为详细模式
```
- 结合版本控制系统(如Git)和持续集成工具(如Jenkins)实现自动化。
并行测试
- 使用`pytest-xdist`插件加速测试执行。安装方法:`pip install pytest-xdist`,运行时添加参数:`pytest -n 4`(并行4个进程)。
性能测试
- 使用`timeit`模块或第三方工具(如`Locust`)进行性能评估。
四、测试结果分析与优化
结果解读
- `pytest`会输出测试覆盖率、失败原因及堆栈跟踪,帮助快速定位问题。
- 单元测试结果以`OK`/`FAIL`显示,集成测试可能显示模块间的依赖关系。
持续集成
- 将测试脚本集成到CI/CD流程中,例如使用GitHub Actions或GitLab CI,实现自动化测试和反馈。
五、注意事项
代码覆盖率: 建议目标覆盖率达到70%以上,重点关注核心业务逻辑。 测试优先级
文档与规范:为测试用例添加描述性注释,便于团队协作。
通过以上方法,可构建全面的Python测试体系,提升软件质量和开发效率。