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 7 assert断言
前言:断言是自动化最终的目的,一个用例没有断言,就失去了自动化测试的意义了. 断言用到的是 assert关键字.之前的介绍,有的测试方法中其实用到了assert断言.简单的来说,就是预期的结果去和实际 ...
- pytest之assert断言
assert pytest允许您使用标准Python断言来验证Python测试中的期望和值.例如,你可以写下 # content of test_assert1.py def f(): return ...
- pytest自动化7:assert断言
前言:assert断言就是将实际结果和期望结果做对比,符合预期结果就测试pass,不符合预期就测试failed. 实例1:简单断言 实例1优化版--增加异常信息文字描述 异常断言 excinfo 是一 ...
- pytest七:assert
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试 pass,不符合预期那就测试 failed py ...
- iOS自动化探索(五)自动化测试框架pytest - Assert断言的使用
使用assert语句进行断言 pytest允许使用标准的python assert语法,用来校验expectation and value是否一致 代码演示: def func(): def test ...
- Pytest系列(2) - assert断言详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 与unittest不同,py ...
- Pytest(10)assert断言
前言 断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了.什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failed ...
- 【pytest系列】- assert断言的使用
unittest断言方式是用过框架自己实现的,即self.assertEqual()等,当我们使用pytest框架后,这种断言方式是不可用的,因为测试类不会再继承unittest.TestCase类, ...
- Spring Assert 断言
Assert(断言)的初步理解构思 Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查, ...
随机推荐
- python爬虫爬取页面源码在本页面展示
python爬虫在爬取网页内容时,需要将内容连同内容格式一同爬取过来,然后在自己的web页面中显示,自己的web页面为django框架 首先定义一个变量html,变量值为一段HTML代码 >&g ...
- 从SVD到推荐系统
最近在学习推荐系统(Recommender System),跟大部分人一样,我也是从<推荐系统实践>学起,同时也想跟学机器学习模型时一样使用几个开源的python库玩玩.于是找到了surp ...
- IDEA下搜狗输入法输入中文时卡着不动的参考解决方法
在IntelliJ IDEA工具的java编辑窗口,给代码增加注释时发现,输入中文时,搜狗输入法界面不动,一直卡着,如图: 我想输入“根据”两个字,但搜狗输入法界面一直卡着不刷新,导致都不知道自己输 ...
- python---redis缓存页面实现
import tornado.web from controllers.BaseController import BaseRequestHandler import redis pool = red ...
- 学习windows编程 day5 之 区域裁剪
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- linux配置java环境变量jdk jre(详细)【转】
linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...
- java.net.URL 模拟用户登录网页并维持session【转】
java.net.URL 模拟用户登录网页并维持session 半成品,并非完全有用 import java.io.BufferedReader; import java.io.InputStream ...
- go switch
go switch无需写break 写法1: func main() { var a int fmt.Scanf("%d\n", &a) switch a { case 1 ...
- idea 插件的使用 进阶篇(个人收集使用中的)
idea 插件的使用 进阶篇(个人收集使用中的) 恭喜你,如果你已经看到这篇文章,证明在idear使用上已经初有小成!那么就要向着大神进发了! 下边就是大神之路! 插件的设置 在 IntelliJ I ...
- Pytorch中的squeeze()和unsqueeze()函数
在numpy库中,经常会出现“秩为1的一维数组”(come from 吴恩达的深度学习,目前还没有搞清楚numpy中如此设计的意图).比如: 注意这里的a的shape是[3] ,既不是 [1,3] 也 ...