掌握测试的艺术:深入探索Python的pytest库

文章目录

  • **掌握测试的艺术:深入探索Python的pytest库**
    • 背景:为什么选择pytest?
    • pytest是什么?
    • 如何安装pytest?
    • 5个简单的库函数使用方法
      • 1. pytest.main()
      • 2. pytest.skip()
      • 3. pytest.mark.parametrize()
      • 4. pytest.raises()
      • 5. pytest.fixture()
    • 3个场景使用代码说明
      • 场景一:单元测试
      • 场景二:集成测试
      • 场景三:性能测试
    • 常见3个bug及解决方案
      • Bug 1: 测试发现错误
      • Bug 2: 测试用例未被识别
      • Bug 3: 测试依赖问题
    • 总结

在这里插入图片描述

掌握测试的艺术:深入探索Python的pytest库

背景:为什么选择pytest?

在Python的世界里,测试是确保代码质量的关键步骤。pytest 是一个强大的测试框架,它不仅简化了测试过程,还提供了丰富的功能来增强测试的灵活性和可读性。从简单的单元测试到复杂的功能测试,pytest都能提供强大的支持。接下来,我们将深入探索pytest的魔力。

pytest是什么?

pytest 是一个成熟的Python测试工具,它允许你编写简单的测试,同时提供强大的功能,如参数化测试、插件系统、丰富的断言和易于使用的测试发现机制。

如何安装pytest?

你可以通过Python的包管理器pip来安装pytest。只需在命令行中输入以下命令:

pip install pytest

5个简单的库函数使用方法

1. pytest.main()

这是pytest的入口点,用于运行测试。

import pytest# 运行所有测试
pytest.main()

2. pytest.skip()

用于跳过某些测试用例。

def test_example():pytest.skip("跳过这个测试")

3. pytest.mark.parametrize()

用于参数化测试,可以为同一个测试函数提供不同的输入。

@pytest.mark.parametrize("num", [1, 2, 3])
def test_numbers(num):assert num > 0

4. pytest.raises()

用于检查代码是否抛出了预期的异常。

with pytest.raises(ValueError):raise ValueError("错误信息")

5. pytest.fixture()

用于创建测试前的设置和测试后的清理。

@pytest.fixture
def resource():# 设置资源yield# 清理资源

3个场景使用代码说明

场景一:单元测试

def add(a, b):return a + bdef test_add():assert add(1, 2) == 3

这个测试检查add函数是否正确地返回两个数的和。

场景二:集成测试

def test_database_connection():db = DatabaseConnection()assert db.connect() == "Connected"

这个测试检查数据库连接是否成功。

场景三:性能测试

import timedef test_performance():start = time.time()result = complex_calculation()end = time.time()assert end - start < 1  # 期望计算时间小于1秒

常见3个bug及解决方案

Bug 1: 测试发现错误

错误信息: ModuleNotFoundError: No module named 'pytest'
解决方案:
确保已安装pytest:

pip install pytest

Bug 2: 测试用例未被识别

错误信息: ERROR: no tests collected
解决方案:
确保测试文件以test_开头,测试函数以test_开头。

Bug 3: 测试依赖问题

错误信息: AttributeError: 'module' object has no attribute 'function'
解决方案:
确保在fixture中正确地yield资源。

总结

通过本文,我们深入了解了pytest的强大功能和使用方法。从安装到实际应用,再到解决常见问题,pytest无疑为Python测试提供了一个全面而强大的工具。掌握pytest,将使你的代码更加健壮,开发过程更加高效。
在这里插入图片描述

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

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

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

相关文章

python 地理抠图

python 地理抠图 在Python中进行地理抠图&#xff0c;可以使用geopandas库&#xff0c;它是基于pandas的地理空间数据处理库。以下是一个简单的例子&#xff0c;展示如何根据一个多边形区域来抠出该区域内的地理数据。 首先&#xff0c;安装必要的库&#xff08;如果尚未安装&…

力扣1425.带限制的子序列和

力扣1425.带限制的子序列和 单调队列优化dp f[i] 表示在数组的前 i 个数中进行选择&#xff0c;并且恰好选择了第 i 个数&#xff0c;可以得到的最大和状态转移&#xff1a;f[i] max(max(f[j]) , 0) nums[i];单调队列优化&#xff1a;储存前K个f[i]&#xff0c;并且单调&…

Go 语言生产服务故障案例精析

大多数 Go 开发者都停留在简单的增删改查层面,对 Go 语言本身掌握程度不够,对常用依赖或者开源组件掌握不够,在开发项目过程中总会不经意间引入一些千奇百怪的问题,并且在遇到线上问题时往往束手无策。下面列举一些线上问题以及相应的解决思路,希望大家能从这些问题中吸取…

Debian 安装 OpenSSH 服务器

Debian 安装 OpenSSH 服务器 先查看装了没安装 OpenSSH 服务器软件包启动 SSH 服务&#xff1a;查看服务状态修改 SSH 配置&#xff08;测试机可跳过&#xff09;连接测试文件收发 lrzsz 先查看装了没 apt-cache policy openssh-server安装 OpenSSH 服务器软件包 更新软件包列…

Notion 详细使用基础教程

1. 引言 什么是Notion? Notion是一款集笔记、任务管理、知识库和协作工具于一体的生产力应用。它被广泛用于个人和团队的日常工作和学习中。与传统的生产力工具不同&#xff0c;Notion提供了高度的自定义功能&#xff0c;允许用户根据自己的需求创建独特的工作流&#xff0c;…

(1)冒泡排序和其优化

一 冒泡排序 1.1 冒泡排序概念 冒泡排序&#xff08;Bubble Sort&#xff09;是一种交换排序&#xff0c;基本思想是&#xff1a;两两比较相邻记录的关键字&#xff0c;如果反序则交换&#xff0c;直到没有反序记录位置。 假设要对无序数列{2,3,4,5,6,7,8,1}排序&#xff1a;…

VastBase——执行计划

一、SQL的执行过程 1.词法分析 从查询语句中识别出系统支持的关键字、标识符、运算符、终结符等&#xff0c;确定每个词固有的特性。 以如下这个查询为例&#xff1a; select name from test_0717 where id > 1; 该SQL语句可以划分的关键字、标识符、运算符、常量等…

深入理解linux内核hung_task机制,最全!原创!

背景 最近的一个项目里&#xff0c;发生的问题近乎多半都是hangdetect的问题&#xff0c;之前一直对这种问题总是一知半解&#xff0c;发现主要是因为对此种维测方案(hangdetect/hangtask/watchdog/hungdetect)的理解不够深刻&#xff0c;而更深层次的原因是对于内核的各种机(…

vue3 setup基本使用

1. 基本概念 在 Vue 3 中&#xff0c;setup 函数是在组件创建之前调用的&#xff0c;用于初始化组件的响应式数据、计算属性、方法等。setup 函数返回的对象会作为组件的上下文提供给模板&#xff0c;模板中可以直接访问返回的属性和方法。 <template><div><p…

【python学习】-在条件分支结构中错误使用or导致其他条件分支的代码跳过并不执行

在条件分支结构中错误使用or导致其他条件分支的代码跳过并不执行 bug的来源背景代码目标第一版代码第二版代码第三版代码 问题总结后语 bug的来源背景 由于课题更换的原因&#xff0c;最近去做实验搬砖工了&#xff0c;所以大半年没有写代码&#xff0c;这两天开始处理一些代码…

使用CMake组织构建QT项目

文章目录 定位Qt安装路径查找QT包设置自动MOC、UIC和RCC包含和链接Qt库处理资源文件调整编译器设置处理UI文件多平台支持高级编译选项在使用CMake来组织和构建Qt项目时,需要注意一系列的细节以确保项目的顺利编译和运行。这些细节涉及确保Qt和CMake之间的兼容性、处理UI文件和…

HTML详解

1. 文档结构标签 <!DOCTYPE html>&#xff1a;声明文档类型&#xff0c;告诉浏览器这是一个HTML5文档。<html>&#xff1a;HTML文档的根元素&#xff0c;包含整个HTML文档。<head>&#xff1a;包含文档的元数据&#xff08;metadata&#xff09;&#xff0c…

计算多图的等价无向图的邻接链表表示

计算多图的等价无向图的邻接链表表示 摘要:一、引言二、算法思路三、伪代码实现四、C代码实现五、算法分析六、结论摘要: 在图论中,多图(Multigraph)是一种允许边重复以及存在自循环边(即一个顶点到其自身的边)的图。给定一个多图的邻接链表表示,本文旨在探讨如何构造…

Git 忽略已经提交的文件

对于未提交过的文件直接用ignore文件即可,不再赘述 对于已经提交过的文件,但是实际上不需要的,可以用git rm --cached命令 比如下图这个 .vsconfig被我误提交了或者忘了在ignore里添加了 但是我实际上不想要这个文件,那么在项目根目录打开git bash ,输入 git rm --cached .vsc…

【QNX+Android虚拟化方案】107 - QNX NFS Server + Android NFS Client 完整配置

【QNX+Android虚拟化方案】107 - QNX NFS Server + Android NFS Client 完整配置 一、QNX 侧 NFS Server 修改:ip 为 192.168.1.21.1 配置拷贝 nfsd、rpcbind 到 /mnt 目录下1.2 配置 exports1.3 为NFS 共享目录挂载镜像1.4 修 startup.sh 开机自启动 nfsd Server1.5 关闭 QNX…

分歧时间估计与被子植物的年代-文献精读43

Ad fontes: divergence-time estimation and the age of angiosperms 回归本源&#xff1a;分歧时间估计与被子植物的年代 摘要 准确的分歧时间对于解释和理解谱系演化的背景至关重要。在过去的几十年里&#xff0c;有关冠被子植物推测的分子年龄&#xff08;通常估计为晚侏罗…

RabbitMQ中的死信交换机?(RabbitMQ延迟队列有了解过吗)

延迟队列 延迟队列:进入队列的消息会被延迟消费的队列。 延迟队列死信交换机 TTL&#xff08;过期时间&#xff09; 延迟队列的使用场景:超时订单、限时优惠、定时发布 死信交换机 当一个队列中的消息满足下列情况之一时&#xff0c;可以成为死信(dead letter): 消费者使…

wpf prism 《1》、区域 、模块化

安装prism.DryIoc 修改app.xaml <prism:PrismApplication x:Class"WpfApp3.App"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local"clr-namespace:W…

求职Leetcode题目(9)

1.通配符匹配 题解&#xff1a; 其中&#xff0c;横轴为string s&#xff0c;纵轴为pattern p 这个表第(m,n)个格子的意义是:【p从0位置到m位置】这一整段&#xff0c;是否能与【s从0位置到n位置】这一整段匹配 也就是说&#xff0c;如果表格的下面这一个位置储存的是T(True)…

shell脚本--正则表达式

一、正则表达式的类型 在Linux中,有两种流行的正则表达式引擎: POSIX基础正则表达式(basic regular expression,BRE)引擎 POSIX扩展正则表达式(extended regular expression,ERE)引擎 POSIX BRE引擎通常出现在依赖正则表达式进行文本过滤的编程语言中。它为常见模式提供…