二、assert 断言
前言:
与 unittest 不同,pytest 使用的是 python 自带的 assert 关键字来进行断言。
assert 关键字后面可以接一个表达式,只要表达式的最终结果为 True,那么断言通过用例执行成功, 否则用例执行失败。
1. 测试用例的断言管理:
断言:pytest 的断言使用 Python 中的 assert 函数
断言时机:
验证页面是否跳转到正确的页面
验证计算结果与正确结果是否一致
验证接口返回的 JSON 数据是否正确
验证接口返回的状态码是否正确
验证返回值是否与预期一致
2. 常用断言:
assert xx:判断 xx 为真
assert not xx:判断 xx 不为真
assert a in b:判断 b 包含 a
assert a == b:判断 a 等于 b
assert a != b:判断 a 不等于 b
3. 异常断言
可以使用 pytest.raises 作为上下文管理器,当抛出异常时可以获取到对应的异常实例
# 断言异常
def test_zero_division():
with pytest.raises(ZeroDivisionError):
1 / 0
断言场景:断言抛出的异常是不是预期想要的
代码执行:1/0
预期结果:抛出的异常为 ZeroDivisionError:division by zero
如何断言:通常是断言异常的 type 和 value 值
具体方式:这里 1/0 的异常类型是 ZeroDivisionError,异常的 value 值是 divisionby zero
# 详细断言异常
def test_zero_division_long():
with pytest.raises(ZeroDivisionError) as excinfo:
1 / 0
# 断言异常类型 type
assert excinfo.type == ZeroDivisionError
# 断言异常 value 值
assert "division by zero" in str(excinfo.value)
excinfo:是一个异常信息实例
主要属性:.type、.value、.traceback
注意:断言 type 时,异常类型是不需要加引号的,断言 value 值时需要转 str