博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
pytest七:assert断言
阅读量:5239 次
发布时间:2019-06-14

本文共 2105 字,大约阅读时间需要 7 分钟。

断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢? 简单来讲就是实际结果和期望结果去对比,符合预期那就测试 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()
 
 

转载于:https://www.cnblogs.com/zhongyehai/p/9681002.html

你可能感兴趣的文章
手机端h5 ajax 上传图片支持微信内置浏览器
查看>>
Redmine
查看>>
HtmlEditor常用模式
查看>>
Another app is currently holding the yum lock; waiting for it to exit.. yum被锁定无法使用
查看>>
帧的最小长度 CSMA/CD
查看>>
xib文件加载后设置frame无效问题
查看>>
第一次博客
查看>>
Java Map 常见用法举例
查看>>
编程算法 - 左旋转字符串 代码(C)
查看>>
IOS解析XML
查看>>
Python3多线程爬取meizitu的图片
查看>>
树状数组及其他特别简单的扩展
查看>>
Linux vi/vim
查看>>
zookeeper适用场景:分布式锁实现
查看>>
110104_LC-Display(液晶显示屏)
查看>>
javascript全局变量
查看>>
全连接神经网络(DNN)
查看>>
httpd_Vhosts文件的配置
查看>>
php学习笔记
查看>>
28 hashlib 模块 logging 模块 和 configparser模块 functools模块的偏函数partial
查看>>