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

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

pytest简介

pytest是一款流行的,简单易上手的单元测试框架,让开发&测试人员专注业务逻辑。

同事pytest有丰富的第三方扩展库,方便生成报告,输出UT覆盖率,支持快速高效的分布式执行。

安装

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

bash 复制代码
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

可行的目录结构

cmd 复制代码
Project
	ModuleA
	ModuleB
	pytest.ini
	.coveragerc
	unit_test
		__init__.py
		conftest.py
		test_xx.py

配置

pytest.ini

ini 复制代码
# Project pytest.ini

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()
	
	yeild

	do_something_post()

.coveragerc

覆盖率配置文件,放在unit_test同级目录。

此配置文件中,可以配置

  • 覆盖率统计的代码源目录,

  • 忽略的脚本(支持正则写法),

  • 忽略的代码行(支持正则写法)。

conf 复制代码

执行UT

命令行执行

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

pytest -n 

PyCharm右键执行

右键执行,支持 运行 调试

测试报告report.html

生成的报告中,会显示通过/失败的测试用例。

单击行 可以折叠/打开 用例执行信息

覆盖率报告 htmlcov/index.html

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

相关推荐
꧁ᝰ苏苏ᝰ꧂10 分钟前
第一章 什么是量化金融
python·金融
果子耶耶13 分钟前
让大模型帮我写单元测试,5个模型的覆盖率和边界处理能力实测
chatgpt·单元测试
Hanniel23 分钟前
Python描述符(下):内置机制揭秘
开发语言·python·机器学习
Cloud_Shy61829 分钟前
解读《Effective Python 3rd Edition》:从练气到老魔(第七章 Item 52 - 53)
开发语言·人工智能·笔记·python
我不是FD31 分钟前
OpenAI vs Anthropic API 对比:流式返回 + Adapt 适配层完整方案
java·人工智能·python
nanawinona36 分钟前
手工策略转量化,回测到底是在验证什么?
人工智能·python
装不满的克莱因瓶1 小时前
【工业领域】了解目标检测基本流程——从数据到部署的完整工程化思路
人工智能·python·深度学习·机器学习·计算机视觉·目标跟踪·工业领域
叫我:松哥1 小时前
基于Python flask的中学可控智能命题系统设计与实现,整合遗传算法、DeepSeek 大模型及数据库技术构建一体化应用
数据库·人工智能·python·算法·机器学习·flask·遗传算法
在放️1 小时前
Python 练习题讲解 2 · 循环计算
开发语言·python