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 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方法入参进行合 法性检查, ...
随机推荐
- 记一次B站答题经历
第一题部分:社区规范卷 --------- ------------ 第二题:社区规范第二部分 -------------------- 第三部分自由选择题 --------------------- ...
- md5加密解密版本2
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- Jupyter 魔术命令(magic commands)
自动重新加载更改的模块 命令参数如下所示: %autoreload: 自动重载%aimport排除的模块之外的所有模块. %autoreload 0: 禁用自动重载 %autoreload 1: 自动 ...
- android get或post及HttpClient与服务器数据交互
1.Service package mydemo.mycom.demo2.service; import org.apache.http.HttpResponse; import org.apache ...
- [C++]指针/指针数组/数组指针/多维指针/单值指针/多值指针
int main(){ //单值指针(指向单个值得指针,类同普通变量) int *px = new int; *px = 100; printf("%d",*px); delete ...
- php 利用root 权限执行shell脚本
http://blog.csdn.net/lxwxiao/article/details/8513355 也可以指定某个shell文件不需要密码 www-data ALL=(ALL) NOPASSWD ...
- mysql 案例~ 主从复制转化为级联复制
一 需求 mysql 主从复制切换成级联复制二 核心思想 1 开启级联复制 2 确定postion点场景 A->B A-C 三 切换步骤 1 先确定好B为级联复制库 2 B添加log_upd ...
- 实例详析ImageView的adjustViewBonds和scaleType
android:adjustViewBounds是否保持宽高比.需要与maxWidth.MaxHeight一起使用,否则单独使用没有效果. 设置View的最大高度,单独使用无效,需要与setAdjus ...
- js遍历对象的方法
1. for ... in 语句 for (let variable in object) { ... } https://developer.mozilla.org/zh-CN/docs/Web/ ...
- linux笔记_day06
1.用户:表示符,凭证 2.用户组:表示符 进程也是有属主和属组的 安全上下文(secure context): 用户:UID,/etc/pawwd 组:GID ,/etc/group 影子口令: 用 ...