目录

前言:

01 — Python 原生的 assert

02 — Pytest 的 assert 优点

03 — Pytest 断言的用法

4.1 断言字符串

4.2 断言函数或者接口返回值

4.3 断言集合类型

04 — Pytest 断言 Excepiton

05 — 为断言添加自定义功能

06 — 禁止 Pytest 的 assert 特性

07 — 总结

前言:

在自动化测试中,判断测试是否通过是非常重要的一步。Pytest测试框架提供了丰富的断言用法,用于验证测试结果是否符合预期。

本文将详细介绍 Pytest 的断言,与 TestNG 相比它更加简单,只有一个 assert 语句,但是功能非常强大并且简单易用。

01 — 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]。

不过,这里还有一点小小的缺憾。并没有明确告诉开发人员,条件判断失败的具体位置。需要开发人员自己对比才发现,==左边的第三个元素和右边的第三个元素不一样。

02 — Pytest 的 assert 优点

软件测试工作,经常会遇到断言失败的情况。如果每次失败,都需要测试工程师人眼去观察失败的具体原因和出错的位置,那将是非常耗时的。强大的 Pytest 也考虑到了广大测试工程师面临的问题,因此对 Python 原生的 assert 语句进行了优化和改进,主要在是当断言失败时,将错误的具体信息和位置显示出来,让测试工程师对失败原因一目了然。

还是上面的例子,将其放入到测试用例(test_开头的函数)中:

# content of test_assertion.py

def test_assertion():

assert [1, 2, 3] == [1,

文章链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: