- 单元测试:用于验证代码的最小功能单元(如函数、方法)的正确性。
简单的语法:不需要继承特定类或使用复杂的结构。断言语句简化。
自动发现测试:Pytest 会自动查找以 test_ 开头的函数或文件。
def add(a, b):
return a + b
def test_add():
assert add(1, 2) == 3
def test_subtract():
result = 10 - 5
assert result == 5
pytest
- 参数化测试
@pytest.mark.parametrize
可以在一个测试函数中测试多组输入和输出
@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(2, 3, 5),
(10, 5, 15)
])
def test_add(a, b, expected):
assert add(a, b) == expected
- 功能测试、集成测试、回归测试
- 插件
pytest-django:测试 Django 项目。
pytest-flask:测试 Flask 应用程序。
pytest-cov:生成测试覆盖率报告。
pytest-xdist:支持并行运行测试,提高测试效率。
- 测试用例分组和标记
@pytest.mark给测试用例添加标记,以便运行特定分组的测试。
@pytest.mark.slow
def test_slow_function():
pass
pytest -m slow
- 灵活的前置与后置处理(Fixture)
用于在测试前后进行环境的初始化与清理。
import pytest
@pytest.fixture
def sample_data():
return {"key": "value"}
def test_with_fixture(sample_data):
assert sample_data["key"] == "value"
- 错误重试与失败处理
使用插件(如 pytest-rerunfailures)可以重试失败的测试用例。
生成 HTML 测试报告(使用 pytest-html 插件)。
pytest --html=report.html
- 集成 CI/CD
Pytest 易于与持续集成工具(如 Jenkins、GitLab CI/CD、GitHub Actions)集成,自动化测试流程。