新闻详情

新闻详情

首页 / 资讯中心 / 详情

pytest之assert断言的使用

发布时间:2026/10/1 11:24:10来源:尧图网络
pytest之assert断言的使用
前言今天笔者准备和大家来一起聊聊关于中断言的使用方法, 至于那些没有实际意义的闲话我就不说了, 我们直接进入到正题里面去。一、常用断言断言的实现方式本来是由自身的测试框架来完成的, 也就是大家熟知的 self.xxx 这种写法, 但是当我们换用了其他的测试工具之后, 这种方法就不起作用了。原因在于当前的测试类不再继承于那个特定的基类, 所以我们就必须改用系统自带的断言功能, 虽然市面上的断言方法五花八门, 但相比之下, 那些内置在系统中的断言显得更为简单清晰。关键代码部分主要涉及两个要素,第一个要素是表达式, 第二个要素是错误提示信息。def test_login():# 使用python内置的断言assert 1 2, 1是不等于2的 # 错误信息也可以不写test_login()​ 运行结果C:\software\python\python.exe D:/learn/test.pyTraceback (most recent call last):File D:/learn/test.py, line 13, intest_login()File D:/learn/test.py, line 11, in test_loginassert 1 2, 1是不等于2的AssertionError: 1是不等于2的Process finished with exit code 1在平常的场合之下, 大家会用到的那些断言方式, 具体来说, 大致上可以归纳为下面这几类。二、异常断言你可以使用这个带有一个点的符号来当作上下文处理器去用, 要是它那里蹦出了异常情况, 那你就可以拿到那个具体的异常对象, 接着再通过验证的方法去确认一下它抛出来的这个毛病到底是不是你本来早就预料到了的那个。# 断言异常def test_zero_division():with pytest.raises(ZeroDivisionError):1 / 0如果任意一个自然数除以零, 因为零绝对不能当作被除数, 在运行的时候就会抛出异常, 提示信息是 by zero。# 详细断言异常def test_zero_division_long():with pytest.raises(ZeroDivisionError) as excinfo:1 / 0# 断言异常类型 typeassert excinfo.type ZeroDivisionError# 断言异常 value 值assert division by zero in str(excinfo.value)请注意, 在针对 type 这个字段去做断言检查的时候, 异常类型是不需要加上引号的, 而当需要对 value 这一字段的值进行断言检查的时候, 必须要把其转换成 str 这样的字符串数据类型。三、扩展正则断言你可以把 match 这个词作为参数传递到上下文管理器那里去, 这样做的主要目的, 就是为了去测试一下看那个正则表达式, 它是不是能够跟那个异常的字符串表示的形式给匹配上。请大家一定要注意, 采用这种方法的话, 我们只能对value进行断言操作, 我们是绝对不能对type进行断言的。# 自定义消息def test_zero_division_long():with pytest.raises(ZeroDivisionError, match.*zero.*) as excinfo:1 / 0该匹配方法的参数是re函数进行匹配操作, 所以在上述给出的示例代码里, 参数设置成match等于zero也是完全可以的。# 自定义消息def test_zero_division_long():with pytest.raises(ZeroDivisionError, matchzero) as excinfo:1 / 0​ 运行结果检查断言装饰器当代码抛出异常的时候, 如果这个异常和事先指定的那个异常类的类型是对得上的, 那么断言就不会因为失败而导致错误。它的作用相当于是对一种检查异常情况进行装饰的一个处理机制, 其核心的目的就是为了去核查看看是否存在异常情况, 尽管我们并不确定当前是否真的会出现异常, 针对不同的使用场景来说, 可以体现出如下几种不同的应用方式:# 断言装饰器pytest.mark.xfail(raisesZeroDivisionError)def test_f():1 / 0​ 执行结果总结
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Unity开发月度精选:水墨Shader、Burst优化与微信小游戏打包实战 2026/10/1 13:04:23

Unity开发月度精选:水墨Shader、Burst优化与微信小游戏打包实战

1. 为什么每月整理Unity项目这件事值得认真做 做Unity开发这些年,我养成了一个习惯:每个月固定花两三天时间,把近期社区里讨论度比较高、完成度也比较扎实的Unity项目过一遍。不是为了追热点,而是因为Unity这个生态太特殊了——它…

阅读更多 →
CAS-ViT实战复现:卷积加性注意力如何让图像分类提速降本 2026/10/1 13:04:23

CAS-ViT实战复现:卷积加性注意力如何让图像分类提速降本

简介:CAS-ViT实战项目面向图像分类任务,聚焦视觉Transformer计算效率与性能的平衡。CAS-ViT通过卷积加性标记混合器(CATM)和加性相似度函数,替代传统自注意力机制,显著降低计算开销,特别适合资源…

阅读更多 →
Logstash HTTP 413 错误排查:从现象到解决全攻略 2026/10/1 13:04:23

Logstash HTTP 413 错误排查:从现象到解决全攻略

1. 现象与误判:413 并不总是 Logstash 自己报的先说结论:Logstash 调用里出现 413,绝大多数情况下不是 Logstash 自身主动拒绝,而是某个中间环节认为请求体超过了它能接受的上限。HTTP 状态码 413 的定义就是 Payload Too Large&a…

阅读更多 →
可变形注意力详解:从DETR加速到DAT与DCNv3的机制实现 2026/10/1 13:04:23

可变形注意力详解:从DETR加速到DAT与DCNv3的机制实现

可变形注意力(Deformable Attention)这个概念我第一次认真啃,是在2020年复现DETR的那段时间。当时DETR要在整张特征图上做密集注意力,500个epoch才收敛到一个能看的精度,一个实验排期就是好几天,调一次参数…

阅读更多 →
Godot 4.7 用颜色贴图驱动场景物体散布:从原理到性能优化 2026/10/1 13:04:23

Godot 4.7 用颜色贴图驱动场景物体散布:从原理到性能优化

在游戏开发里,手动摆放植被、石头、道具这类重复性工作,做过的都懂——几百上千个物件一个个拖进场景,调位置、调旋转、调缩放,眼睛都快看瞎了,改一次地形还得全部重来。我最近在 Godot 4.7 里折腾出一套用地面 UV 贴图…

阅读更多 →
渔船作业方式识别:YOLOv8s轻量模型实现围网刺网拖网精准检测 2026/10/1 13:04:16

渔船作业方式识别:YOLOv8s轻量模型实现围网刺网拖网精准检测

简介:本资源是一套面向AI初学者与计算机视觉实践者的海上渔业作业识别项目,聚焦围网、刺网、拖网三类捕鱼方式的图像分类任务,助力渔业监管与生态保护场景下的智能识别技术落地。压缩包共14个文件,含10个Python脚本(覆…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉