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()
 
 
 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值