二、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

 

posted @ 2023-09-01 14:48  努力的小测试  阅读(67)  评论(0编辑  收藏  举报