二、assert 断言
前言:
与 unittest 不同,pytest 使用的是 python 自带的 assert 关键字来进行断言。
assert 关键字后面可以接一个表达式,只要表达式的最终结果为 True,那么断言通过用例执行成功, 否则用例执行失败。
1. 测试用例的断言管理:
断言:pytest 的断言使用 Python 中的 assert 函数
断言时机:
验证页面是否跳转到正确的页面
验证计算结果与正确结果是否一致
验证接口返回的 JSON 数据是否正确
验证接口返回的状态码是否正确
验证返回值是否与预期一致
2. 常用断言:
assert xx:判断 xx 为真
assert not xx:判断 xx 不为真
assert a in b:判断 b 包含 a
assert a == b:判断 a 等于 b
assert a != b:判断 a 不等于 b
3. 异常断言
可以使用 pytest.raises 作为上下文管理器,当抛出异常时可以获取到对应的异常实例
# 断言异常
def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0
断言场景:断言抛出的异常是不是预期想要的
代码执行:1/0
预期结果:抛出的异常为 ZeroDivisionError:division by zero
如何断言:通常是断言异常的 type 和 value 值
具体方式:这里 1/0 的异常类型是 ZeroDivisionError,异常的 value 值是 divisionby zero
# 详细断言异常
def test_zero_division_long():
with pytest.raises(ZeroDivisionError) as excinfo:
1 / 0
# 断言异常类型 type
assert excinfo.type == ZeroDivisionError
# 断言异常 value 值
assert "division by zero" in str(excinfo.value)
excinfo:是一个异常信息实例
主要属性:.type、.value、.traceback
注意:断言 type 时,异常类型是不需要加引号的,断言 value 值时需要转 str
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix