【测试】Pytest-功能

时间:2024-12-18 07:30:10
  1. 单元测试:用于验证代码的最小功能单元(如函数、方法)的正确性。
    简单的语法:不需要继承特定类或使用复杂的结构。断言语句简化。
    自动发现测试: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 #运行
  1. 参数化测试
    @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
  1. 功能测试、集成测试、回归测试
  2. 插件
    pytest-django:测试 Django 项目。
    pytest-flask:测试 Flask 应用程序。
    pytest-cov:生成测试覆盖率报告。
    pytest-xdist:支持并行运行测试,提高测试效率。
  3. 测试用例分组和标记
    @pytest.mark给测试用例添加标记,以便运行特定分组的测试。
@pytest.mark.slow
def test_slow_function():
    # 测试代码
    pass
pytest -m slow
  1. 灵活的前置与后置处理(Fixture)
    用于在测试前后进行环境的初始化与清理。
import pytest

@pytest.fixture
def sample_data():
    return {"key": "value"}

def test_with_fixture(sample_data):
    assert sample_data["key"] == "value"
  1. 错误重试与失败处理
    使用插件(如 pytest-rerunfailures)可以重试失败的测试用例。
    生成 HTML 测试报告(使用 pytest-html 插件)。
pytest --html=report.html
  1. 集成 CI/CD
    Pytest 易于与持续集成工具(如 Jenkins、GitLab CI/CD、GitHub Actions)集成,自动化测试流程。