Pytest插件pytest-cov:优雅管理测试覆盖率

在软件开发中,测试覆盖率是评估测试质量的关键指标之一。为了更方便地统计和管理测试覆盖率,Pytest插件"pytest-cov"应运而生。本文将介绍"pytest-cov"的基本用法和优雅管理测试覆盖率的方法。

图片

什么是pytest-cov?

pytest-cov 是Pytest的一个插件,它提供了一种简单而强大的方式来测量和报告代码的测试覆盖率。通过集成测试覆盖率工具,pytest-cov可以帮助开发者了解哪些部分的代码被测试覆盖,哪些部分还需要进一步的测试。

图片

安装pytest-cov

在开始之前,首先需要安装"pytest-cov"。使用以下命令:

pip install pytest pytest-cov

图片

pytest-cov基本用法

本篇文章以下的篇幅将根据一个实际的案例来介绍pytest-cov的基本用法。

假设你有一个名为my_project 的项目,其中包含一个名为 calculator 的模块,你想要使用pytest-cov来测试并测量 calculator 模块的覆盖率。以下是一个简单的案例:

1. 项目结构

   my_project/   ├── calculator/   │   ├── __init__.py   │   └── calculator.py   ├── tests/   │   ├── __init__.py   │   └── test_calculator.py   └── pytest.ini

2. calculator.py代码内容:

   # my_project/calculator/calculator.py   def add(a, b):       return a + b   def subtract(a, b):       return a - b

3. test_calculator.py代码内容:

# my_project/tests/test_calculator.py   from calculator.calculator import add, subtract   def test_add():       result = add(3, 5)       assert result == 8   def test_subtract():       result = subtract(10, 4)       assert result == 6

4.  pytest.ini的设置内容:

   # my_project/pytest.ini   [pytest]   addopts = --cov=calculator --cov-report=html

5. 运行测试:

在项目的根目录下运行以下命令: 

 pytest tests/

此外如果想同时生成HTML格式的覆盖率报告,可以运行:

 pytest --cov=calculator --cov-report=html tests/

这将运行 tests/ 目录下的测试,并使用pytest-cov测量 calculator 模块的覆盖率。HTML报告将生成在项目根目录下的 htmlcov 文件夹中。执行完之后,打开htmlcov文件夹,打开index.html,内容如下截图:

图片

如果更改测试文件的代码,比如删除一个测试函数 test_subtract 那么,此时覆盖率就不应该是100%了,有兴趣的话,大家可以试一试。

通过这个简单的案例,你可以了解如何使用pytest-cov来测试和测量项目中特定模块的代码覆盖率。在实际项目中,你可以根据项目结构和需要进行适当的调整。

在后续的文章中将继续深入讲解覆盖率相关的内容,如果大家觉得内容还可以,还请多多点赞,转发,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/304416.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

zabbix-proxy代理安装及其他监控方式

zabbix-proxy代理安装及其他监控方式 安装zabbix-proxyserver端配置zabbix-proxy配置被监控的agent安装中问题解决监控网络设备JMX和IPMI监控方式 zabbix-proxy的安装,至少需要准备三台机器,一台安装服务端,一台安装agent端,这里就…

65寸OLED透明拼接屏,从这4个方面解读,让您秒懂

随着显示技术的不断进步,OLED透明拼接屏作为新一代的大屏显示解决方案,正逐渐受到市场的青睐。作为尼伽技术总监,我深知其对于高端显示市场的价值。下面,我将从技术的角度深入剖析这一产品。 一、规格与种类 65寸OLED透明拼接屏有…

Java学习笔记-day03-类名.this:内部类引用外部类实例

类名.this是啥意思? 今天在看尚硅谷的课程时里面讲了这么一句话: 集合在遍历时需要先创建一个容器,存放集合的数据,这样做浪费内存 想去验证下,就翻了翻ArrayList的迭代过程源码 在ArrayList的迭代器类Itr(…

在 PyCharm 中使用 Copilot

GitHub Copilot 由 OpenAI Codex 提供支持,可帮助用户在编辑器中实时工作。 它使用强大的 GPT-3 模型版本,该模型在大量开源代码上进行训练。 此外,GitHub Copilot 可在不同的 IDE(集成开发环境)上使用,包…

局域网IP地址冲突、环路的罪魁祸首是什么?

中午好,我的网工朋友。 这个时代,网络已经贯穿了人们的生活,对企业而言,办公信息化更是离不开网络支持。 为了提高安全管理和信息化水平,很多企业都建立了完善的办公信息系统,但一些企业在网络建设方面还…

【嵌入式】git工具基础命令学习笔记 | 嵌入式Linux

文章目录 前言一、git基础指令二、git分支管理2.1、一些基础命令2.2、时间回溯2.3、新建分支,删除分支,重命名分支 前言 参考:飞凌嵌入式ElfBoard ELF-1 软件学习手册 chatGPT 一、git基础指令 首先我们新建一个名叫git的文件夹&#xff0…

GreatSQL喊你来考证啦~

GreatSQL社区全网开放且全免费的GCA和GCP双等级考核认证,赶快来参与吧~ 认证课程介绍 GreatSQL社区开放GCA与GCP双等级认证课程,课程全面覆盖GreatSQL的安装、使用、优化、安全高可用等方面,包含构建主从和MGR架构,优化提升性能…

【动态代理详解】

文章目录 1. 关于代理1.1 代理的概述1.1.1 什么是动态代理1.1.2 动态代理能做什么 1.2 什么是代理1.2.1 生活中的代理1.2.2 为什么要找中介? 1.3 开发中的代理模式(代理)1.3.1 使用代理模式的作用 1.4 实现代理的方式 2. 静态代理2.1 什么是静…

百川智能发布角色大模型 ,零代码复刻角色轻松满足游戏领域定制需求

2024年1月9日,百川智能发布角色大模型Baichuan-NPC,深度优化了“角色知识”和“对话能力”,使模型能够更好的理解上下文对话语义,更加符合人物性格地进行对话和行动,让角色栩栩如生。此外,对于游戏领域AI角…

各版本 操作系统 对 .NET Framework 与 .NET Core 支持

有两种类型的受支持版本:长期支持 (LTS) 版本和标准期限支持 (STS) 版本。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得为期三年的免费支持和补丁。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息,请参阅 .N…

找不到文件Computer Management.lnk怎么办

win10系统右键“此电脑”,在右键菜单选择“管理”弹出错误提示: windows找不到文件Computer Management.lnk 打开电脑C盘路径C:\Windows\System32,找到compmgmt.msc文件 给compmgmt.msc文件创建一个快捷键选择文件compmgmt.msc,右…

联盛德-安全物联网芯片w800

联盛德-安全物联网芯片w800 前言一、w800简介?芯片外观 总结 前言 本文介绍w800的基本信息,详细规格,后续有时间会介绍如何适配openharmony的过程。 一、w800简介? W800 芯片是一款安全 IoT Wi-Fi/蓝牙 双模 SoC 芯片。支持 2.…

软件测试|Linux三剑客之sed命令详解

简介 sed(Stream Editor)是一款流式文本编辑器,在 Linux 和类 Unix 系统中广泛使用。它的设计目的是用于对文本进行处理和转换,可以用于替换、删除、插入、打印等操作。sed 命令通过逐行处理文本,允许您使用简单的命令…

物联网协议Coap中Californium CoapClient解析

目录 前言 一、CoapClient对象 1、类定义 2、Client方法调用 二、发送请求 1、构建请求 2、发起请求 3、接收响应 总结 前言 在之前的博客中物联网协议Coap之Californium CoapServer解析,文中简单介绍了CoapServer的实现。在物联网开发环境中,除了…

git安装教程 Windows 附安装包链接

Git是一款分布式源代码管理工具(版本控制工具) 。 git的作用 当你需要做一个大工程的时候,文件的管理无疑是非常庞大的工作,因为你需要不断的修改更新文件内容,同时可能还要保留旧版本保证可以复原,这样就需要备份多个版本的文件…

【镜像压缩】linux 上 SD/TF 卡镜像文件压缩到实际大小的简单方法(树莓派、nvidia jetson)

文章目录 1. 备份 SD/TF 卡为镜像文件2. 压缩镜像文件2.1. 多分区镜像文件的压缩(树莓派、普通 linux 系统等)2.2. 单分区镜像文件的压缩(Nvidia Jetson Nano 等) 3. 还原镜像文件到 SD/TF 卡4. 镜像还原后处理4.1. 镜像分区调整4…

【MySQL】:用户管理

用户管理 一.用户1.用户信息2.创建用户3.修改密码4.删除用户 二.数据库权限1.给用户授权2.回收权限 如果在以下操作中出现以下报错 可以使用刷新权限 一.用户 1.用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中。 字段解释: host&#xff…

基于SSM+Vue的学校社团管理系统(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

基于代理IP的多线程爬虫实现

目录 前言 1. 爬虫的基本原理 2. 多线程爬虫的优势 3. 代理IP的应用 4. 基于代理IP的多线程爬虫实现 步骤1:导入必要的模块 步骤2:定义爬虫函数 步骤3:创建线程并启动爬虫 总结 前言 本文将介绍如何使用Python编写一个基于代理IP的多…

UR机器人旋转矢量和俯仰角的转换

我们在使用机器人的时候,总是习惯使用俯仰角来描述机器人末端姿态的变换。这样更直观,但是机器人为了插值方便计算,总是采用旋转矢量来来描述机器人的姿态。该旋转矢量及不直观,单一轴角度旋转时还可以理解,当两个轴或…