IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> pytest中断言的用法 -> 正文阅读

[开发测试]pytest中断言的用法

  • 与unittest不同,pytest使用的是python自带的assert关键字来进行断言

  • assert关键字后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败

举例

# 异常信息
def f():
    return 3

def test_function():
    a = f()
    assert a % 2 == 0, "判断 a 为偶数,当前 a 的值为:%s" % a

运行结果:
在这里插入图片描述
可以看到,在断言之后可以输出具体原因

常用断言

pytest 里面断言实际上就是 python 里面的 assert 断言方法,常用的有以下几种
assert xx :判断 xx 为真
assert not xx :判断 xx 不为真
assert a in b :判断 b 包含 a
assert a == b :判断 a 等于 b
assert a != b :判断 a 不等于 b

异常断言

为了编写有关引发的异常的断言,可以将其 pytest.raises用作上下文管理器。
通常我们要断言它抛的异常是不是预期的,比如执行:1/0,预期结果是抛异常:ZeroDivisionError: division by zero,那我们要断言这个异常。通常是断言异常的type和value的值。这里1/0的异常类型是ZeroDivisionError,异常的value值是"integer division or modulo by zero"。

def test_zero_division():
        assert 1/0

在这里插入图片描述

使用断言处理
1,直接用pytest.raises()处理异常,直接断言,不添加assert语句,用例直接通过

def test_zero_division2():
    with pytest.raises(ZeroDivisionError):
        1 / 0

在这里插入图片描述

2,将异常信息存储到一个变量中,变量的类型则为异常类,包含异常的type、value和traceback等信息excinfo是一个ExceptionInfo实例,是实际引发的异常的包装。

def test_zero_division():
    with pytest.raises(ZeroDivisionError,message="捕获异常") as exinfo:
        1/0
    assert exinfo.type == ZeroDivisionError
    assert str(exinfo.value) == "division by zero"

可以看出来,这个测试用例,捕获到特定的一场,用例通过
需要注意:断言type的时候,不需要给异常类型添加引号。需要把value的值转换成str类型的才可以比较,而且值是要加引号的。

但是当没有捕获到想要的一场,用例执行失败,raises里面的message关键字参数消息指定自定义失败消息
3.可以将match关键字参数传递给上下文管理器,以测试正则表达式与异常的字符串表示形式是否匹配,在用例中定义抛出的异常信息是否与预期的异常信息匹配,若不匹配则用例执行失败

def test_zero_division():
    with pytest.raises(ZeroDivisionError,match='division_test') as exinfo:
        1/0
    assert exinfo.type == ZeroDivisionError

在这里插入图片描述

def test_zero_division():
    with pytest.raises(ZeroDivisionError,match='division by') as exinfo:
        1/0
    assert exinfo.type == ZeroDivisionError

在这里插入图片描述

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-18 12:59:46  更:2021-08-18 13:00:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 20:23:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码