当前位置: 首页 > article >正文

pytest 常用插件

pytest 提供了许多功能强大的插件来增强测试体验和执行能力。以下是一些常用的 pytest 插件介绍,并结合 pytest.main() 进行使用的示例。

1. pytest-xdist

pytest-xdist 插件用于并行化测试的执行,可以将测试分配到多个 CPU 核心并行运行,从而加速测试过程。

功能:
  • 并行执行测试:通过 -n 参数指定使用多少个进程进行测试。
  • 分布式执行:支持将测试分布到多台机器进行执行。
  • 负载均衡:动态分配测试任务,确保测试负载均衡。
安装:
pip install pytest-xdist

使用:
  1. 命令行使用

    pytest -n 4  # 使用 4 个进程并行运行
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 并启用 pytest-xdist 的并行执行
    pytest.main(["-n", "4", "test_module.py"])  # 将 test_module.py 中的测试分配到 4 个进程并行执行
    


2. pytest-rerunfailures

pytest-rerunfailures 插件用于自动重试失败的测试,避免偶尔的临时问题影响测试结果,适合那些偶尔失败的测试。

功能:
  • 重试失败的测试:在测试失败时自动重新运行测试,直到达到指定的重试次数。
  • 控制重试次数:你可以设置每个测试的最大重试次数。
安装:
pip install pytest-rerunfailures

使用:
  1. 命令行使用

    pytest --reruns 3  # 失败的测试最多重试 3 次
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 并启用 pytest-rerunfailures 的失败重试
    pytest.main(["--reruns", "3", "test_module.py"])  # 失败的测试重试 3 次
    


3. pytest-cov

pytest-cov 插件用于测试覆盖率分析,它可以生成代码覆盖率报告,帮助你检查测试的覆盖程度。

功能:
  • 生成代码覆盖率报告:可以生成文本、HTML 或 XML 格式的代码覆盖率报告。
  • 与 CI 集成:可以与持续集成工具结合使用,生成覆盖率报告并进行分析。
安装:
pip install pytest-cov

使用:
  1. 命令行使用

    pytest --cov=your_module tests/  # 生成 `your_module` 的代码覆盖率报告
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 生成代码覆盖率报告
    pytest.main(["--cov=your_module", "tests/"])  # 在 tests/ 目录下运行测试并生成 `your_module` 的代码覆盖率报告
    


4. pytest-mock

pytest-mock 插件提供了一个更简便的方式来模拟(mock)对象,尤其是在需要对外部依赖进行测试时,帮助你控制被测试代码的行为。

功能:
  • 模拟对象的行为:可以模拟函数或方法,返回指定的值,或者检查是否调用。
  • 与 unittest.mock 集成:简化了 unittest.mock 的用法,使其在 pytest 中更为方便。
安装:
pip install pytest-mock

使用:
  1. 命令行使用

    • 在测试函数中使用 mock 进行模拟操作:
    def test_mock_example(mocker):
        mock_func = mocker.patch('module.function_name')
        mock_func.return_value = 42
        assert module.function_name() == 42
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 来运行包含 mock 的测试
    pytest.main(["test_module.py"])
    


5. pytest-django

pytest-django 插件为 pytest 提供了对 Django 项目的支持,简化了 Django 测试的设置和运行。

功能:
  • 支持 Django 测试:自动设置 Django 环境,使得测试更为简便。
  • 集成 Django 的测试客户端:通过 pytest 使用 Django 的 TestCaseClient 进行测试。
安装:
pip install pytest-django

使用:
  1. 命令行使用

    pytest --django-settings=your_project.settings  # 指定 Django 配置文件
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 运行 Django 测试
    pytest.main(["--django-settings=your_project.settings", "test_module.py"])
    


6. pytest-html

pytest-html 插件用于生成 HTML 格式的测试报告,便于查看测试结果和统计数据。

功能:
  • 生成 HTML 测试报告:输出漂亮的 HTML 格式的报告,包含测试的统计信息、详细的结果和错误日志。
  • 定制报告格式:可以自定义报告的样式和内容。
安装:
pip install pytest-html

使用:
  1. 命令行使用

    pytest --html=report.html  # 生成 HTML 格式的测试报告
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 生成 HTML 格式的测试报告
    pytest.main(["--html=report.html", "test_module.py"])
    


7. pytest-sugar

pytest-sugar 插件为 pytest 提供了更友好的输出格式,使得测试结果显示更为美观和清晰。

功能:
  • 美化输出:通过改变输出格式,使测试过程更为友好和易读。
  • 实时进度显示:显示测试进度,测试通过或失败时的颜色高亮。
安装:
pip install pytest-sugar

使用:
  1. 命令行使用

    pytest --maxfail=5 --disable-warnings  # 启用美化输出,最多失败 5 次并禁用警告
    

  2. 结合 pytest.main() 使用

    import pytest
    
    # 使用 pytest.main() 并启用美化输出
    pytest.main(["--maxfail=5", "--disable-warnings", "test_module.py"])
    


总结:

这些插件为 pytest 提供了强大的扩展功能,帮助你提升测试的效率、可读性和可维护性。通过结合使用 pytest.main(),你可以在 Python 脚本中轻松地运行这些插件,灵活地控制测试的执行、输出和结果。

常见插件及功能总结:
插件名功能简介
pytest-xdist支持并行化和分布式测试执行,提升测试效率。
pytest-rerunfailures自动重试失败的测试,用于偶发故障。
pytest-cov生成代码覆盖率报告,检查测试覆盖率。
pytest-mock提供模拟(mock)功能,方便控制被测试对象的行为。
pytest-django提供对 Django 项目的支持,简化 Django 测试的执行。
pytest-html生成 HTML 格式的测试报告。
pytest-sugar美化 pytest 输出格式,增强可读性。

通过使用这些插件,你可以根据需求自定义测试的执行过程,增强测试的可视化效果,进而提高测试效率和稳定性。


http://www.kler.cn/a/488302.html

相关文章:

  • springboot+vue使用easyExcel实现导出功能
  • 获取地图文档中的图层列表
  • stringRedisTemplate.execute执行lua脚本
  • 代码随想录 哈希 test 8
  • 鸿蒙面试 2025-01-10
  • 芯片详细讲解,从而区分CPU、MPU、DSP、GPU、FPGA、MCU、SOC、ECU
  • Redis数据库笔记——Redis快的原因
  • Java(day7)
  • HTTP 与 HTTPS 网络传输
  • Linux -- 初步了解 TCP 编程
  • ubuntu 20.04 安装 5.4 内核
  • CClinkIEfield Basic转Modbus TCP网关模块连接三菱FX5U PLC
  • 关于物联网的基础知识(四)——国内有代表性的物联网平台都有哪些?
  • xml-dota-yolo数据集格式转换
  • 【FPGA】时序约束与分析
  • 部署langchain服务
  • 使用 FastAPI 和 Async Python 打造高性能 API
  • 超大规模分类(三):KNN softmax
  • cJson——序列化格式json和protobuf对比
  • 单元测试MockitoExtension和SpringExtension
  • poi处理多选框进行勾选操作下载word以及多word文件压缩
  • Cognitive architecture 又是个什么东东?
  • 【Rust自学】11.7. 按测试的名称运行测试
  • 记录一个移动端表格布局,就是一行标题,下面一列是对应的数据,一条一条的数据,还有点击数据进入详情的图标,还可以给一列加input输入框,还可以一对多
  • dubbo3 负载均衡
  • js迭代器模式