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

news2024/11/17 11:33:21

在软件开发中,测试覆盖率是评估测试质量的关键指标之一。为了更方便地统计和管理测试覆盖率,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来测试和测量项目中特定模块的代码覆盖率。在实际项目中,你可以根据项目结构和需要进行适当的调整。

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Css样式制作图形倒影

该CSS样式是WebKit(主要应用于Safari和其他基于WebKit的浏览器)的特定前缀属性,用于实现元素内容的反射效果。具体解释如下: -webkit-box-reflect: 定义了一个盒反射效果,仅在支持WebKit的浏览器中生效。 below 15px&a…

JS-DOM树和DOM对象

作用和分类 作用:就是使用JS去操作html和浏览器 分类:DOM(文档对象模型)、BOM(浏览器对象模型) 什么是DOM DOM(Document Object Model--文档对象模型)是用来呈现以及与任意HTML或…

Laravel 框架中队列的使用

概述 Laravel 框架内置了强大的队列系统,用于处理异步任务、提高系统性能等。队列可以让任务异步执行,而不会阻塞当前进程,可以提高系统的处理能力。 Laravel 的队列系统支持多种驱动,如 Redis、Beanstalkd、SQS 等,…

静态代理IP是如何助力跨境电商运营的?我的跨境电商发展史

跨境电商这几年的火爆程度已经不需要我多说什么了,我自己与跨境电商结缘还是无意之间在某乎上看了那种所谓的“0基础小白如何在家做跨境电商,副业月入XX,附选品指南!”。 我不知道你们刷到过这种类似的帖子没有,当时…

InternLM第3节课笔记

基于 InternLM 和 LangChain 搭建你的知识库 1 大模型开发范式 LLM局限性:时效性、专业能力有限、定制化成本高 RAG(检索、增强、生成) 外挂知识库 微调 2 LangChain简介 LangChain 核心组成模块 Chains:组件组合实现端到…

MATLAB--pie函数绘制分类饼图(1)--附案例代码

MATLAB–pie函数绘制分类饼图(1) 目录 MATLAB--pie函数绘制分类饼图(1)摘要1. pie函数概述2. 使用pie函数绘制分类图的步骤步骤1:准备数据步骤2:调用pie函数步骤3:定制图形(可选&…

杭州中科微 BDS/GNSS 全星座定位导航模块 ATGM332D-5N31使用笔记

一、BDS/GNSS 全星座定位导航模块 ATGM332D-5N31 介绍 ATGM332D-5N 系列模块是 12X16 尺寸的高性能 BDS/GNSS 全星座定位导航模块系列的总称。该系列模块产品都是基于中科微第四代低功耗 GNSS SOC 单芯片—AT6558,支持多种卫星导航系统,包括中国的 BDS&a…

LeetCode+ 56 - 60

合并区间 双指针算法、位运算、离散化、区间合并_小雪菜本菜的博客-CSDN博客 class Solution { public:vector<vector<int>> merge(vector<vector<int>>& a) {vector<vector<int>> res;if(a.empty()) return res;sort(a.begin(),a.en…

数据结构二叉树创建及例题(上)

今天就带领大家来到树的世界,树无论是在考试上还是实际学习方面都是比较重点的,大家在这块知识要花时间搞懂. 文章目录 前言 一、树的二叉链表定义 二、二叉树三种遍历方式(递归方式) 1.先序遍历方式(根左右) 2.中序遍历方式(左根右) 3.后序遍历方式(左右根) 三、二叉树的…

智能小程序小部件(Widget)开发详解

Widget 代表应用的一个小部件&#xff0c;负责小部件的展示和交互。 小部件(Widget) 的开发在智能小程序的基础上增加一个目录即可&#xff0c;用于存放小部件(Widget)的代码。并在 project.tuya.json 中增加一个声明。 创建小部件(Widget)项目 在 Tuya MiniApp Tools 中&…

强化学习应用(一):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

在windows11系统上利用docker搭建linux记录

我的windows11系统上&#xff0c;之前已经安装好了window版本的docker&#xff0c;没有安装的小伙伴需要去安装一下。 下面直接记录安装linux的步骤&#xff1a; 一、创建linux容器 1、拉取镜像 docker pull ubuntu 2、查看镜像 docker images 3、创建容器 docker run --…

Ubuntu 22.04 编译安装 Qt mysql驱动

参考自 Ubuntu20.04.3 QT5.15.2 MySQL驱动编译 Ubuntu 18.04 编译安装 Qt mysql驱动 下边这篇博客不是主要参考的, 但是似乎解决了我的难题(找不到 libmysqlclient.so) ubuntu18.04.2 LTS 系统关于Qt5.12.3 无法加载mysql驱动&#xff0c;需要重新编译MYSQL数据库驱动的问题以…

代码随想录算法训练营第六天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

刷题建议 刷题建议与debug 代码随想录目前基本都有了视频讲解&#xff0c;一定要先看视频&#xff0c;事半功倍。写博客&#xff0c;将自己的感悟沉淀下来&#xff0c;不然会忘大家提问的时候&#xff0c;记得要把问题描述清楚&#xff0c;自己在哪一步遇到了问题&#xff0c…

虚幻UE 材质-材质图层、材质图层混合

学习材质图层和材质图层混合的使用&#xff0c;便于节点扫盲。 文章目录 前言一、材质图层混合二、使用步骤总结 前言 材质混合我们之前用Bridge的插件进行混合过 而此次我们的材质混合使用UE自带的材质图层和材质图层混合来实现 一、材质图层混合 材质图层混合是一种允许将…

数据结构初阶之插入排序与希尔排序详解

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 Linux 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力,共赴大厂。 目录 一.前言 二.插入排序 …

jmeter分布式服务搭建

目录 一、环境准备 二、 安装包下载 三 、安装jdk 四 、控制机安装 4.1 解压压缩包 4.2 修改 bin/jmeter.properties 4.3 修改 bin/system.properties 五、执行机安装 5.1 解压安装包 5.2 修改 bin/jmeter.properties 5.3 修改 bin/system.properties 5.4 启动执行机 …

常见的AdX程序化广告交易模式有哪些?媒体如何选择恰当的交易模式?

程序化广告的核心目的是&#xff1a;让需求方能自由地选择流量与出价&#xff0c;程序化广告在数字广告投放中的主导地位日益巩固。 程序化广告“交易模式”有哪些&#xff1f;以下是详细解读&#xff0c;帮助媒体选择恰当的交易方式&#xff0c;从而实现广告价值的最大化。 …

python netCDF4

NetCDF简介 NetCDF 即 network Common Data Form&#xff08;网络通用数据格式&#xff09;&#xff0c;是一种面向数组型并适于网络共享的数据的描述和编码标准。文件的后缀是 .nc。nc 在气象领域应用很广&#xff0c;因为它可以存储不同波段的长时间观测结果。 NetCDF 文件…

全志V853 NPU开发之工具安装

V853支持最高1T NPU算力&#xff0c;在进行NPU相关开发前&#xff0c;需要先配置NPU开发环境。 Linux系统准备 NPU开发环境依赖于Linux系统&#xff0c;需要先准备 Linux 开发环境。 经测试NPU 工具支持下列 Linux 发行版&#xff1a; Ubuntu 20.04 其他部分 Linux 发行版…