pytest七:assert
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?
简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed
pytest 允许使用标准 Python 断言来验证 Python 测试中的期望和值。例如
断言 f()函数的返回值,接下来会看到断言失败,因为返回的值是 3,判断等于 4,所以失败了
从报错信息可以看到断言失败原因:E assert 3 == 4
import pytest def f():
return 3 def test_function():
assert f() == 4 if __name__=='__main__':
pytest.main()
异常信息
接下来再看一个案例,如果想在异常的时候,输出一些提示信息,这样报错后,就方便查看是什么原因了
这样当断言失败的时候,会给出自己写的失败原因了
E AssertionError: 判断 a 为偶数,当前 a 的值为:3 import pytest def f():
return 3 def test_function():
a = f()
assert a % 2 ==0, f'判断a为偶数,当前a的值为:{a}' if __name__=='__main__':
pytest.main()
异常断言:为了写关于引发异常的断言,可以使用 pytest.raises 作为上下文管理器,如下
import pytest def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0 if __name__=='__main__':
pytest.main()
如果我们要断言它抛的异常是不是预期的,比如执行:1/0,预期结果是抛异常:ZeroDivisionError: division by zero,那我们要断言这个异常,通常是断言异常的 type 和 value 值了。
这里 1/0 的异常类型是 ZeroDivisionError,异常的 value 值是 division by zero,于是用例可以这样设计
excinfo 是一个异常信息实例,它是围绕实际引发的异常的包装器。主要属性是.type、 .value 和 .traceback
注意:断言 type 的时候,异常类型是不需要加引号的,断言 value 值的时候需转 str
在上下文管理器窗体中,可以使用关键字参数消息指定自定义失败消息
import pytest def test_zero_division():
''' 断言异常 '''
with pytest.raises(ZeroDivisionError) as excinfo:
1 / 0
# 断言异常类型 type
assert excinfo.type == ZeroDivisionError
# 断言异常value值
assert 'division by zero' in str(excinfo.value)
常用断言 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
import pytest def is_true(a):
if a > 0:
return True
else:
return False def test_01():
'''断言xx为真'''
a = 5
b = -1
assert is_true(a)
assert not is_true(b) def test_02():
'''断言b包含a'''
a = 'hello'
b = 'hello world'
assert a in b def test_03():
'''断言相等'''
a = "XXX"
b = "XXX"
assert a == b def test_04():
'''断言不等于'''
a = 5
b = 6
assert a != b if __name__ == "__main__":
pytest.main()
pytest七:assert的更多相关文章
- pytest七:assert断言
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed py ...
- pytest 7 assert断言
前言:断言是自动化最终的目的,一个用例没有断言,就失去了自动化测试的意义了. 断言用到的是 assert关键字.之前的介绍,有的测试方法中其实用到了assert断言.简单的来说,就是预期的结果去和实际 ...
- pytest.3.Assert
From: http://www.testclass.net/pytest/assert/ Assert就是断言,每个测试用例都需要断言. 与unittest不同,pytest使用的是python自带 ...
- pytest之assert断言
assert pytest允许您使用标准Python断言来验证Python测试中的期望和值.例如,你可以写下 # content of test_assert1.py def f(): return ...
- 3.pytest断言assert
pytest使用的python自带的断言assert关键字,和unittest封装的assert断言不一样 原理:用来测试某个断言条件,如果断言条件为True,则程序将继续正常执行:但如果断言条件为假 ...
- pytest测试框架 -- assert断言和fixture固件
一.断言 (1)使用assert语句进行断言 # test_run.py @pytest.mark.assert def test_assert(self): r = requests.get(&qu ...
- 关于pytest的一些问题
一. 测试模块内部使用fixture和测试模块调用外部公共的fixture 1. unittest框架下的测试用例模块 from selenium import webdriver import un ...
- 3、pytest中文文档--编写断言
目录 编写断言 使用assert编写断言 编写触发期望异常的断言 特殊数据结构比较时的优化 为失败断言添加自定义的说明 关于断言自省的细节 复写缓存文件 去使能断言自省 编写断言 使用assert编写 ...
- 8、pytest -- 捕获告警信息
目录 1. 告警信息的默认捕获行为 2. @pytest.mark.filterwarnings 3. 去使能告警信息的展示 4. 去使能告警的捕获行为 5. DeprecationWarning和P ...
随机推荐
- intellj(idea) 编译项目时在warnings 页签框里 报 “xxx包不存在” 或 “找不到符号” 或 “未结束的字符串字面值” 或 “需要)” 或 “需要;”等错误提示
如上图: 环境 是 刚换的系统,重装的Intellj,直接双击老的皇帝项目中的idea的 .iml文件,结果 打开 intellj 后,进行 ctrl +shift +F9 编译时 尽然报 错误提示, ...
- 二、主目录 Makefile 分析(2)
2.7 编译选项---config.mk 代码 163 164 行 # load other configuration include $(TOPDIR)/config.mk 此段就是包含顶层目录下 ...
- mysql 案例 ~ pt-kill工具的使用
一 简介:学习pt-kill工具使用 二 功能: 能按照多维角度进行kill的查杀,迅速的降低数据库使用负载 三 常用命令 pt-kill --match-command 'Query|Sleep' ...
- 解决jdk1.7,1.8共存问题小思
一 起因 随着jdk1.9呼之欲出之势,准备花点时间把jdk1.8搞掉,于是准备下一个项目的依赖改为jdk1.8,先去下载安装,安装好之后电脑上就存在两个版本的jdk.然后将两个版本的jdk路径都配置 ...
- Dubbo服务降级
当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或简单处理,从而释放服务器资源以保证核心业务正常运作或高效运作. 可以通过服务降级功能临时屏蔽某个出错的非关键服务并定义 ...
- Pytorch入门之VAE
关于自编码器的原理见另一篇博客 : 编码器AE & VAE 这里谈谈对于变分自编码器(Variational auto-encoder)即VAE的实现. 1. 稀疏编码 首先介绍一下“稀疏编码 ...
- 【vim】删除指定标记前的内容 dt[标记]
和删除标记内部有些相似,但目的不同.命令如下: dt[标记] 会删除所有光标和标记之间的内容(保持标记不动),如果在同一行有这个标记的话.例如 dt. 会删除至句子的末尾,但保持 '.' 不动.
- vim常用命令总结 (转)【转】
转自:https://www.cnblogs.com/yangjig/p/6014198.html 在命令状态下对当前行用== (连按=两次), 或对多行用n==(n是自然数)表示自动缩进从当前行起的 ...
- gdb revert, Go to previous line in gdb
Yes! With the new version 7.0 gdb, you can do exactly that! The command would be "reverse-step& ...
- Python3学习笔记20-获取对象信息
当我们拿到一个对象的引用时,如何知道这个对象是什么类型.有哪些方法呢? 基本类型都可以用type()判断: print(type(123)) print(type('str')) print(type ...