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

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 = 42assert 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 输出格式,增强可读性。

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

相关文章:

pytest 常用插件

pytest 提供了许多功能强大的插件来增强测试体验和执行能力。以下是一些常用的 pytest 插件介绍,并结合 pytest.main() 进行使用的示例。 1. pytest-xdist pytest-xdist 插件用于并行化测试的执行,可以将测试分配到多个 CPU 核心并行运行,从…...

浅谈云计算05 | 云存储等级及其接口工作原理

一、云存储设备 在当今数字化飞速发展的时代,数据已然成为个人、企业乃至整个社会的核心资产。从日常生活中的珍贵照片、视频,到企业运营里的关键业务文档、客户资料,数据量呈爆炸式增长。面对海量的数据,如何安全、高效且便捷地存…...

linux:文件的创建/删除/复制/移动/查看/查找/权限/类型/压缩/打包,文本处理sed,awk

关于文件的关键词 创建 touch 删除 rm 复制 cp 权限 chmod 移动 mv 查看内容 cat(全部); head(前10行); tail(末尾10行); more,less,grep 查找 find 压缩 gzip ; bzip 打包 tar 编辑 sed 文本处理 awk 创建文件 格式: touch 文件名 删除文件 复制文…...

CentOS 8 如何安装java与mysql

在CentOS 8上安装Java和MySQL的步骤如下: 1. 安装 Java 1.1 安装 OpenJDK(推荐) CentOS 8 默认的软件仓库提供了 OpenJDK 包,您可以直接使用 dnf 命令安装。 # 更新系统 sudo dnf update -y# 安装 OpenJDK 11(Cent…...

Go语言之路————go基本语法、数据类型、变量、常量、输出

Go语言之路————go基本语法、数据类型、变量、常量 前言一、基本语法知识二、数据类型三、常量四、变量五、作用域六、输入输出 前言 我是一名多年Java开发人员,因为工作需要现在要学习go语言,Go语言之路是一个系列,记录着我从0开始接触G…...

音视频入门基础:MPEG2-PS专题(7)——通过FFprobe显示PS流每个packet的信息

音视频入门基础:MPEG2-PS专题系列文章: 音视频入门基础:MPEG2-PS专题(1)——MPEG2-PS官方文档下载 音视频入门基础:MPEG2-PS专题(2)——使用FFmpeg命令生成ps文件 音视频入门基础…...

Docker安装和卸载(centos)

Docker安装和卸载 一,已安装Docker,卸载Docker 1.方法一 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine​ 如果出现以下提示就证明没卸载…...

YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注 前期准备 先打开Anaconda Navigator,点击Environment,再点击new(new是我下载anaconda的文件夹名称),然后点击创建 点击绿色按钮,并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具,在上篇…...

Winforms开发基础之非主线程操作UI控件的误区

前言 想象一下,你正在开发一个桌面应用程序,用户点击按钮后需要执行一个耗时操作。为了避免界面卡顿,你决定使用后台线程来处理任务。然而,当你在后台线程中尝试更新UI控件时,程序突然崩溃了。这是为什么呢&#xff1…...

Flutter中Get.snackbar和Get.dialog关闭冲突问题记录

背景: 在使用GetX框架时,同时使用了Get.snackbar提示框和Get.dialog加载框,当这两个widget同时存在时,Get.dialog加载框调用Get.back()无法正常关闭。 冲突解释: 之所以会产生冲突,是因为Get.snackbar在关…...

springcloudalibaba集成fegin报错ClassNotFoundException解决方案

集成fegin遇到问题: java.lang.ClassNotFoundException: com.netflix.config.CachedDynamicIntProperty 解决方案: 在pom文件中添加依赖 <dependency><groupId>com.netflix.archaius</groupId><artifactId>archaius-core</artifactId><versi…...

【HTML+CSS+JS+VUE】web前端教程-31-css3新特性

圆角 div{width: 100px;height: 100px;background-color: saddlebrown;border-radius: 5px;}阴影 div{width: 200px;height: 100px;background-color: saddlebrown;margin: 0 auto;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);}...

力扣264. 丑数 II

给你一个整数 n &#xff0c;请你找出并返回第 n 个 丑数 。丑数 就是质因子只包含 2、3 和 5 的正整数。 //用一个数组来保存第1到第n个丑数 //一个丑数必须是乘以较小的丑数的 2、3 或 5来得到。 //使用三路合并方法&#xff1a;L2、L3 和 L5三个指针遍历2、3、5倍的丑数序列…...

计算机网络之---TCP连接管理

TCP连接管理 TCP&#xff08;传输控制协议&#xff09;是面向连接的协议&#xff0c;在数据传输之前需要建立连接&#xff0c;在数据传输完成后需要断开连接。TCP连接的建立和断开都遵循特定的规则&#xff0c;分别称为三次握手&#xff08;Three-Way Handshake&#xff09;和四…...

《CPython Internals》阅读笔记:p118-p150

《CPython Internals》学习第 8 天&#xff0c;p118-p150 总结&#xff0c;总计 33 页。 一、技术总结 补充一些本人整理的关于 Context-Free Grammar(CFG) 的知识。 1.symbol(符号) A mathematical symbol is a figure or a combination of figures that is used to repre…...

C/C++ 数据结构与算法【排序】 常见7大排序详细解析【日常学习,考研必备】带图+详细代码

常见7种排序算法 冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;希尔排序&#xff08;Shell Sort&#xff09;归并排序&#xff08;Merge Sort&#xff09;快速排序&#xff08;…...

三只松鼠携手爱零食,社区零售新高峰拔地而起

合纵连横&#xff0c;这是当前零售行业发展的一个主旋律。从商超之王胖东来的全国调改&#xff0c;到社区零售正在进行的渠道变革&#xff0c;竞争的激烈和商业模式的升级令人目不暇接。 量贩零食赛道在过去一年就是如此&#xff0c;有杀伐&#xff0c;有并购&#xff0c;刀光…...

Java聊天小程序

拟设计一个基于 Java 技术的局域网在线聊天系统,实现客户端与服务器之间的实时通信。系统分为客户端和服务器端两类,客户端用于发送和接收消息,服务器端负责接收客户端请求并处理消息。客户端通过图形界面提供用户友好的操作界面,服务器端监听多个客户端的连接并管理消息通…...

Kibana操作ES基础

废话少说&#xff0c;开干&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;截图更清晰&#xff0c;复制在下面 #库操作#创建索引【相当于数据库的库】 PUT /first_index#获…...

MYSQL8创建新用户报错:You have an error in your SQL syntax;check...

本文所用——MYSQL版本&#xff1a;8.0.25 baidu都是直接创建新用户并赋权&#xff0c;如下&#xff1a; GRANT ALL PRIVILEGES ON *.* TO 用户名% IDENTIFIED BY 密码 WITH GRANT OPTION;但是我用的MYSQL版本它就不行&#xff0c;会报错&#xff01; 经查阅资料发现——MY…...

3个关键功能解析:USBToolBox如何简化macOS与Windows的USB端口映射难题

3个关键功能解析&#xff1a;USBToolBox如何简化macOS与Windows的USB端口映射难题 【免费下载链接】tool the USBToolBox tool 项目地址: https://gitcode.com/gh_mirrors/too/tool 在Hackintosh和跨平台开发领域&#xff0c;USB端口映射一直是个令人头疼的技术难题。US…...

App Inventor蓝牙调试避坑指南:从连接失败到数据乱码,一次讲清所有常见问题

App Inventor蓝牙调试避坑指南&#xff1a;从连接失败到数据乱码的实战解决方案在移动应用开发领域&#xff0c;蓝牙通信一直是实现设备间短距离数据交换的核心技术之一。对于使用App Inventor的开发者而言&#xff0c;蓝牙模块提供了无需复杂编码即可实现无线通信的便捷途径。…...

毕业设计 yolov11骨折检测医疗辅助系统(源码+论文)

文章目录 0 前言1 项目运行效果2 课题背景2.1 研究背景2.2 国内外研究现状2.3 研究意义 3 设计框架&#xff08;骨折检测系统设计框架说明&#xff09;3.1. 系统架构图3.2. 技术选型3.2.1 核心组件3.2.2 辅助工具 3.3. 核心模块设计3.3.1 YOLO模型训练模块训练流程图关键伪代码…...

基于MaixCam的延时摄影系统:从硬件选型到Python编程全解析

1. 项目概述&#xff1a;用MaixCam打造你的专属延时摄影工坊延时摄影&#xff0c;这个听起来有点专业、甚至带点“魔法”色彩的词&#xff0c;其实离我们并不遥远。想想看&#xff0c;把一朵花从含苞到绽放的几天时间&#xff0c;压缩成十几秒的惊艳绽放&#xff1b;或者把一座…...

从开题到定稿零焦虑:okbiye AI 论文写作,帮你把毕业季的 “大山” 变成坦途

okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT毕业论文 - Okbiye智能写作https://www.okbiye.com/ai/bylw 毕业季的深夜&#xff0c;宿舍台灯下的屏幕亮着刺眼的光&#xff0c;文档里的字数停留在三位数&#xff0c;而 deadline 正一天天逼近。你是…...

DS4Windows终极指南:3步让PS手柄在PC上完美运行游戏

DS4Windows终极指南&#xff1a;3步让PS手柄在PC上完美运行游戏 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 还在为PS手柄连接Windows电脑后无法识别而烦恼吗&#xff1f;&#x1f3ae…...

基于SMD与贝壳的微型音频装置:从电路设计到嵌入式开发的完整实践

1. 项目概述&#xff1a;一个藏在贝壳里的声音世界你小时候有没有捡起一个海螺壳&#xff0c;把它贴在耳边&#xff0c;然后听到里面传来“呜呜”的海风声&#xff1f;那个瞬间&#xff0c;仿佛整个海洋都被装进了小小的贝壳里。今天这个项目&#xff0c;就是把那个童年的魔法&…...

Keil µVision反汇编窗口内容导出方案与调试技巧

1. 问题背景与需求解析在嵌入式开发过程中&#xff0c;调试环节往往占据大量时间。Keil Vision作为业界广泛使用的集成开发环境(IDE)&#xff0c;其调试器功能强大但某些细节功能仍有提升空间。最近我在使用C251架构开发汽车电子控制单元时&#xff0c;就遇到了一个看似简单却影…...

国内大学生常用的AI写作辅助平台有哪些?

国内高校学生常用的 AI 写作辅助平台&#xff0c;以本土化全流程工具为主&#xff0c;结合通用大模型与专项功能模块&#xff0c;覆盖选题构思、大纲搭建、初稿撰写、语言润色、降重处理、查重检测及格式排版等关键环节&#xff0c;以下是主流平台详解与对比&#xff1a; 一、本…...

基于Cynthion逆向USB协议,为DP100电源开发Linux控制软件

1. 项目概述&#xff1a;用Cynthion嗅探USB&#xff0c;为DP100电源打造Linux软件作为一名长期在Linux环境下折腾硬件和嵌入式开发的爱好者&#xff0c;我经常遇到一个头疼的问题&#xff1a;很多不错的桌面小设备&#xff0c;比如电源、示波器、逻辑分析仪&#xff0c;它们的官…...