Pytest学习(二) - 断言的使用
一、前言
学习pytest总会习惯性的和unittest对比使用,自然就断言pytest和unittest也是有些区别的。
二、断言对比
unittest 断言
assertEqual(a, b) # 判断a和b是否相等
assertNotEqual(a, b) # 判断a不等于b
assertTrue(a) # 判断a是否为Ture
assertFalse(a) #判断a是否为False
assertIn(a, b) # a 包含在b里面
asserNotIn(a, b) # a 不包含在b里面
pytest 断言
pytest只需要用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示例代码
# -*- coding: utf-8 -*-
# @Time : 2020/10/20 19:37
# @Author : longrong.lang
# @FileName: test_assert.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
def f():
return 5;
def test_f():
n = f()
assert n % 3 == 0, "判断n 是否能被3整除,当前 n 的值为:%s" % n
四、执行结果

五、异常断言
结合pytest 断言特点和《Pytest之使用断言指定异常》,再来一个异常的案例,比如除数不能为零,示例代码如下:
# 异常断言
# 异常断言
def test_zero_division():
with pytest.raises(ZeroDivisionError) as exceptionInfo:
100 / 0
# 断言异常类型
assert exceptionInfo.type == ZeroDivisionError
# 断言异常的值
assert "division by zero" in str(exceptionInfo.value)
知识点:
使用pytest.raises,来捕获对应的异常示例,exceptionInfo为一个对象示例来接收属性信息,通常是断言异常的 type 和 value 值
1、使用match断言
- match 关键字是测试正则表达式与异常的字符串表示形式是否匹配
- 这种方法只能断言value,不能断言类型
示例代码如下:
# match的使用
def test_zero_division_match():
with pytest.raises(ZeroDivisionError, match=".*zero.*") as exceptionInfo:
100 / 0
# 也可以这样
with pytest.raises(ZeroDivisionError, match="zero") as exceptionInfo:
100 / 0
match 方法的regexp参数与 re.search 函数匹配,因此在上面的示例中 match='zero' 也可以使用
2、检查断言装饰器使用
示例代码如下:
# 断言装饰器
@pytest.mark.xfail(raises=ZeroDivisionError)
def test_f():
1 / 0
个人觉得这个断言装饰器,和java的注解类似,相对更轻量快捷
3、执行结果

知识点
代码抛出异常,但是和raises指定的异常类相匹配,所以不会断言失败
它相当于一个检查异常装饰器,功能:检查是否有异常,不确定是否有异常
with pytest.raise(ZeroDivisionError) 对于故意测试异常代码的情况,使用可能会更好
而@pytest.mark.xfail(raises=ZeroDivisionError) 对于检查未修复的错误(即,可能会发生异常),使用检查断言可能会更好
装饰器这部分还没学习,后续继续更新,先放一放
系列参考文章:
https://www.cnblogs.com/poloyy/category/1690628.html
Pytest学习(二) - 断言的使用的更多相关文章
- Pytest学习笔记4-assert断言
前言 pytest作为单元测试框架,自然少不了断言功能,用过unittest的人都知道,在unittest中有丰富的断言方法,比如assertEqual().assertIn().assertTrue ...
- pytest学习笔记
From: https://blog.csdn.net/gaowg11/article/details/54910974 由于对测试框架了解比较少,所以最近看了下pytest测试框架,对学习心得做个记 ...
- [转载]pytest学习笔记
pytest学习笔记(三) 接着上一篇的内容,这里主要讲下参数化,pytest很好的支持了测试函数中变量的参数化 一.pytest的参数化 1.通过命令行来实现参数化 文档中给了一个简单的例子, ...
- Go基础学习(二)
数组[array] 数组定义[定义后长度不可变] 12 symbol := [...]string{USD: "$", EUR: "€", GBP: " ...
- pytest学习纪要123-针对经常用到的内容详实记录
pytest123 本文主要参考:https://www.cnblogs.com/yoyoketang/tag/pytest 如有侵权,请站内联系我 目录 pytest123 1.setup和tear ...
- Pytest学习(三) - setup和teardown的使用
一.前言 从文章标题可以看出,就是初始化和释放的操作,根据我的java习惯来学习pytest,个人感觉没差太多,理解上也不是很难. 哦,对了,差点跑题了,这个框架是基于Python语言的,在学习的时候 ...
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- JMeter学习-007-JMeter 断言实例之一 - 响应断言
之前的文章中已经对如何录制 web 的请求进行了详细的描述,敬请参阅:JMeter学习-004-WEB脚本入门实战 同时,我们的手机应用(例如:京东.天猫.唯品会.携程.易迅 等等 App)所发出的请 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
随机推荐
- python的运算符及数据类型的转换
python 目录 python 1.算术运算符 2.比较运算符 3.赋值运算符和复合赋值运算符 4.位运算符 5.逻辑运算符 6.成员运算符 7.身份运算符 8.常见的数据类型转换 1.算术运算符 ...
- JVM垃圾回收安全点Safe Point
GC安全点(Safepoint) 程序执行时并非在所有地方都能停顿下来开始GC,只有在特定的位置才能停顿下来开始GC,这些位置称为“安全点(Safepoint) ” Safe Point的选择很重要, ...
- Linux实战(13):Ubuntu被远程
此方法采用的xrdp原生方案,优点兼容性比较好. 安装xrdp sudo apt install xrdp #最高权限安装xrdp 修改配置 nano /etc/xrdp/startwm.sh #使用 ...
- MGRE及实验
tunnel 隧道:一种的简单的VPN技术: 普通的tunnel为点到点网络类型: 生成隧道接口,流量通过路由查询后,若通过隧道接口转发时,需要在原有的三层报头前,再添加一个公有地址间的报头: 将两个 ...
- 手把手教你基于CentOS8搭建微信订阅号后台服务(一)
一.准备域名并完成解析 关于域名,我买的是阿里的一个1元/年的廉价域名,同时国内域名都需要备案,当时在这里耽搁了挺久的. 域名解析的话,在阿里云官方帮助文档里有.传送门:https://help.al ...
- Mac Catalina 下 gdb codesign问题解决
在 macOS 上,无法直接使用 gdb 进行 debug. 这是因为 Darwin 内核在你没有特殊权限的情况下,不允许调试其它进程.调试某个进程,意味着你对这个进程有完全的控制权限,所以为了防止被 ...
- 在Linux系统下搭建和配置一个minio文件服务器(二)
上一篇主要讲述了在linux系统中搭建一个minio文件服务器,那么这一篇则用来整合java代码中使用,我之前自己已经搭建好了一个springboot项目,那么这一篇将详细讲述如何把minio整合进s ...
- 如何将炫酷的报表直接截图发送邮件——在Superset 0.37使用Schedule Email功能
Superset的图表是非常炫酷的,但是原来的版本只能在web端查看,而最新的0.37版本,可以将图表截图直接发送成邮件,非常的方便. 本文将详细介绍Superset 0.37 定时邮件功能.安装过程 ...
- YOLOv4: Darknet 如何于 Ubuntu 编译,及使用 Python 接口
本文将介绍 YOLOv4 官方 Darknet 实现,如何于 Ubuntu 18.04 编译,及使用 Python 接口. 主要内容有: 准备基础环境: Nvidia Driver, CUDA, cu ...
- GitBook 3.2.3入门
简介 GitBook 是一个基于 Node.js 的命令行工具,可使用 GitHub / Git.Markdown.AsciiDoc来制作精美的电子书.GitBook 可以将文档作为静态网站或电子书( ...