Python的pytest框架(2)--断言机制

接上篇文章,我们使用pytest框架,实现自动发现并执行用例,接着利用断言语句判断测试结果,最后生成报告。这篇文章我们就断言机制来展开,深入学习进阶pytest框架的断言机制:

目录

一、基本断言

使用Python原生assert语句

兼容unittest断言方法

二、断言重写

1. 使用assert语句配合自定义错误消息

2. 编写自定义断言函数

3. 使用unittest.TestCase及其断言方法

三、断言的丰富表达式

1、使用逻辑运算符组合断言

2、利用列表推导式或生成器表达式

3、结合使用上下文管理器和断言

4、使用集合操作验证元素存在性


一、基本断言

1、使用Python原生assert语句

pytest的断言机制基于Python语言的内置assert语句,并在此基础上进行了增强,使其更适合测试场景。pytest鼓励直接使用Python的assert语句来进行断言。在测试函数中,只需编写assert condition或assert expression,当条件为False或表达式求值结果为False时,assert语句将抛出AssertionError异常,标志着测试失败。常用的断言语句如下所示:

assert condition: 最基础的断言形式,检查 condition 是否为真。如果 condition 为假(即 False),则断言失败。

assert expr1 == expr2: 检查两个表达式(如变量、值或函数返回结果)是否相等。如果不相等,断言失败。

assert expr1 != expr2: 检查两个表达式是否不相等。如果相等,断言失败。

assert expr1 is expr2: 检查两个对象是否是同一个对象(即它们有相同的内存地址)。如果不是同一个对象,断言失败。

assert expr1 is not expr2: 检查两个对象是否不是同一个对象。如果是同一个对象,断言失败。

assert expr1 in collection: 检查 expr1 是否是 collection(如列表、元组、集合、字典键等)的成员。如果不是成员,断言失败。

assert expr1 not in collection: 检查 expr1 是否不是 collection 的成员。如果是成员,断言失败。

assert expr1 < expr2, assert expr1 <= expr2, assert expr1 > expr2, assert expr1 >= expr2: 对于数值或可比较的对象,检查它们之间的关系是否满足指定的条件(小于、小于等于、大于、大于等于)。如果不满足,断言失败。

assert almost_equal(expr1, expr2, *, rel_tol=..., abs_tol=...): (需导入 from pytest import approx)检查两个浮点数或可迭代的浮点数集合是否近似相等,可以指定相对误差(rel_tol)和绝对误差(abs_tol)。

assert raises(ExpectedException, func, *args, **kwargs): (需导入 from pytest import raises)检查调用 func(*args, **kwargs) 是否引发指定的异常 ExpectedException。如果没有引发该异常或引发了不同类型的异常,断言失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值