上QQ阅读APP看书,第一时间看更新
2.15.3 assert
在上一节中,我们举了一个如下简单的例子。
if student_info['age'] < 6: raise AssertionError('The minimal age of a student is 6')
在实际编程中,断言的主要应用场景是确认系统逻辑状态的正确性,并不参与业务逻辑的处理。所以,如果断言的代码语句能尽可能简洁的话,对正常的业务逻辑代码的干扰就更小,代码的可读性就可以更高。
使用assert关键字,我们可以用更简洁的代码实现断言检查。在assert语句后接期望的正常状态的逻辑表达式,如果这个逻辑表达式的结果为True,程序继续执行;如果结果为False,则有AssertionError断言错误被抛出。
assert student_info['age'] >= 6
执行结果如下:
Traceback (most recent call last): File "/Users/mxu/Workspace/codes/assertion_demo.py", line 7, in <module> assert student_info['age'] >= 6 AssertionError
任何逻辑判断表达式都可以用于assert语句。比如,断定condition_2应该为True,如果不是这样,就抛出一个断言错误。
assert condition_2
断定condition_3不应该为True,如果它为True,那就抛出一个断言错误。
assert not condition_3
在写assert表达式的时候,在逻辑判断表达式之后,我们可以加上相应的描述信息。描述信息部分在语法上不是必需的,但是我们尽量不要省略,因为在错误排查的时候,这样的信息是非常有帮助的。
assert student_info['age'] >= 6, 'Minimal age of a student is 6'
执行结果如下:
Traceback (most recent call last): File "/Users/mxu/Workspace/codes/assertion_demo.py", line 7, in <module> assert student_info['age'] >= 6, 'Minimal age of a student is 6' AssertionError: Minimal age of a student is 6
在软件程序中,断言表达式可看作是一种更为强大的代码注释,因为它不仅澄清了我们期望的程序状态,而且Python解释器还可以帮助我们检查这样的期望状态。在自动化测试代码中,断言表达式更是有着核心的地位(后续章节会介绍),需要我们好好掌握。