“软件测试的主要工作目标是验证实际结果与预期结果是一致的,在自动化软件测试中,通过断言来实现这一目的。Pytest中断言是通过Python原生的assert语句实现的,对Python原生的assert语句进行了优化,当发生断言失败时,错误信息更加丰富,方便测试时快速定位问题原因。”
优秀的测试框架都提供了断言的方法,比如TestNG中的assertTrue、assertEquals、assertSame等等。前面给大家介绍过Pytest的实践《pytest接口测试轻松入门》,本文将详细介绍Pytest的断言,与TestNG相比它更加简单,只有一个assert语句,但是功能非常强大并且简单易用。
1、Python原生的assert
Python中assert语句通常用来对代码进行必要的检查,确定某种情况一定发生,或者一定不会发生。
Python 的 assert 语句的语法是这样的:
assert expression1 ["," expression2]
expression1往往是一个条件表达式,如果条件表达式为True,则什么也不做,相当于执行了 pass 语句;如果条件表达式为False,便会抛出异常 AssertionError,并返回具体的错误信息expression2。看一个实际例子:
# content of my_assertion.py
def assertion():
assert [1, 2, 3] == [1, 2, 4], "left is [1,2,3], right is [1,2,4]"
if __name__ == '__main__':
assertion()
执行一下上面的代码看看结果:
$ python my_assertion.py
Traceback (most recent call last):
File "my_assertion.py", line 5, in
assertion()
File "my_assertion.py", line 2, in assertion
assert [1, 2, 3] == [1, 2, 4], "left is [1,2,3], right is [1,2,4]"
AssertionError: left is [1,2,3], right is [1,2,4]
可见,assert后面的条件表达式为False,抛出了AssertionError,并显示了错误信息left is [1, 2, 3], right is [1, 2, 4]。
不过,这里还有一点小小的缺憾。并没有明确告诉开发人员,条件