【Python单元测试】pytest框架单元测试 配置 命令行操作 测试报告 覆盖率

news/2024/12/29 5:29:20/

单元测试(unit test),简称UT。本文将介绍在Python项目中,pytest测试框架的安装,配置,执行,测试报告与覆盖率

pytest_1">pytest简介

在这里插入图片描述
pytest是一款流行的,简单易上手的单元测试框架,让开发&测试人员专注业务逻辑。
同事pytest有丰富的第三方扩展库,方便生成报告,输出UT覆盖率,支持快速高效的分布式执行。

安装

pytest pypi
pytest-html
pytest-cov
pytest-xdist
更多好用好玩的扩展库,本文将持续更新中……

pip install pytest
pip install pytest-html  # 生成html格式UT报告 
pip install pytest-cov   # 覆盖率
pip install pytest-dist  # 分布式执行UT# 更新第三方库
pip install pytest -U
pip install pytest-html -U
pip install pytest-cov -U
pip install pytest-dist -U

可行的目录结构

ProjectModuleAModuleBpytest.ini.coveragercunit_test__init__.pyconftest.pytest_xx.py

配置

pytestini_41">pytest.ini

# Project pytest.ini

pytestini_45">pytest.ini避坑

pytest.ini options中配置了 --cov 覆盖率相关的命令,会导致PyCharm中 单元测试用例断点调试失败。
本地开发测试中,pytest.ini中切勿配置!!!

conftest.py

此配置文件中,可以写一些前置或后置的测试套。

python"># unit_test/conftest.py# -*- coding: utf-8 -*-import pytest# 默认执行, 优先度高
# 例如 可以 将文件路径添加到 sys.path@pytest.fixture(scope="session")  # scope范围: session > module > class > function
def handler():do_something_pre()yeilddo_something_post()

.coveragerc

覆盖率配置文件,放在unit_test同级目录。
此配置文件中,可以配置
- 覆盖率统计的代码源目录,
- 忽略的脚本(支持正则写法),
- 忽略的代码行(支持正则写法)。


执行UT

命令行执行

# -n 分布式执行的线程数量,需要小于系统核数。 例如: -n 7
# -pytest -n 

PyCharm右键执行

右键执行,支持 运行 调试

测试报告report.html

生成的报告中,会显示通过/失败的测试用例。
单击行 可以折叠/打开 用例执行信息

覆盖率报告 htmlcov/index.html

覆盖率会显示全部覆盖率/某个单元测试文件(夹)的覆盖率,涉及合计/执行、未执行/忽略的行等信息


http://www.ppmy.cn/news/1543288.html

相关文章

大话C++:第24篇 文件

1 文件概述 文件是指一组相关数据的有序集合,这个数据集的名称叫做文件名。文件通常是驻留在外部介质(如磁盘等)上的,在使用时才调入内存中来,这就是为什么对文件操作时需要打开和关闭的原因。 根据数据的存储方式&a…

【数据仓库】

数据仓库:概念、架构与应用 目录 什么是数据仓库数据仓库的特点数据仓库的架构 3.1 数据源层3.2 数据集成层(ETL)3.3 数据存储层3.4 数据展示与应用层 数据仓库的建模方法 4.1 星型模型4.2 雪花模型4.3 星座模型 数据仓库与数据库的区别数据…

java模拟进程调度

先来先服务优先级调度短作业优先调度响应比优先调度 代码 import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.Scanner;class Main {static class tasks{int id;//序号char jinchengname;//进程名int jinchengId;//double a…

银河麒麟v10 xrdp安装

为了解决科技被卡脖子的问题,国家正在大力推进软硬件系统的信创替代,对于一些平时对Linux操作系统不太熟练的用户来讲提出了更高的挑战和要求。本文以银河麒麟v10 24.03为例带领大家配置kylin v10的远程桌面。 最近公司为了配置信创开发新购了几台银河麒…

啤酒游戏—企业经营决策沙盘

感谢黄浦区文华学院的邀请,今年是为南房集团开展系统思考培训的第二年。我们现在为客户设计的一整年系统思考训练中,会将系统环路结构图与真实议题研讨作为前置内容,让大家在理解整体框架后,再体验麻省理工学院系统动力学著名的“…

PDF无法转换成其他格式的常见原因与解决方法解析

在处理PDF文件转换时,用户常常会遇到一些问题,导致无法将PDF转换为其他格式(如Word、Excel、或图片等)。以下是一些常见原因以及解决方法的解析。 ## 一、常见原因 ### 1. **PDF文件的安全性设置** 许多PDF文件在创建时可能设置…

Android:ViewPaper动态添加移除第一页

问题: 动态改变itemList之后,调用notifyDataSetChanged();没有作用。 原因: 原因是PagerAdapter内部的getItemPosition方法获取的值是固定POSITION_UNCHANGED,表示未改变,所以不更新。 解决: 要更新则…

AUTOSAR 规范中的设计模式:传感器执行器模式

在 AUTOSAR Adaptive Platform (AP) 规范中,传感器执行器模式是一种典型的设计模式,主要用于实时控制系统中,用来实现传感器数据的获取和执行器指令的发送。该模式通过分离传感器和执行器的实现,使其独立运行并且能够通过某种通信…