pytest常用断言

发布时间 2023-05-02 21:15:47作者: 工作手记

image

如上官网所说,pytest使用python中的assert来比较实际值与预期值,实现断言功能

1 常用的断言方式 assert xxx

assert a == b
assert a!=b
assert a > b
assert a <b
assert a in b
assert a not in b
assert instance(a,int)
assert a >b and a >c 同时断言多个条件
assert a > b or a> c

2 断言异常 pytest.raise(xxx)

如果test代码出现了预期中的异常则断言成功,否则断言失败
image

执行结果
image

b为0 时,py会抛出ZeroDivisionError,b为1 时,情况正常,不会抛出异常。所以
预期会抛出ZeroDivisionError,断言成功
预期会抛出ValueError,实际是抛出ZeroDivisionError或者不抛出异常,断言失败

注意
1 这里没有用我们常见的assert的方式
2 注意with语句后的代码是否执行的问题
image

断言异常并断言异常信息中的文本与预期是否一致

image
执行结果
image

注意
1 assert的缩进位置
2 异常与预期不一致、未发生异常也会导致断言失败
3 异常有3个属性 traceback type value

也可以用正则匹配的方式来判断异常中的文本信息

image

不用with语句方式断言异常

image

断言未抛出指定异常

image

执行结果
image

3断言警告信息pytest_warning()

用法与异常断言一样
warning 的类型参照python的warning部分 https://docs.python.org/3/library/warnings.html
image