断言assert总结

来源:互联网 发布:mysql测试数据库下载 编辑:程序博客网 时间:2024/05/16 12:04

0.Python的assert是用来检查一个条件,如果它为真,就不做任何事。如果它为假,则会抛出AssertError并且包含错误信息。assert语句是一种插入调试断点到程序的一种便捷的方式。

1.使用断言可以创建更稳定,品质更好且不易于出错的代码。当需要在一个值为FALSE时中断当前操作的话,可以使用断言。单元测试必须使用断言(Junit/JunitX)

2.断言可以有两种形式

1.assert Expression1
2.assert Expression1:Expression2

其中Expression1应该总是一个布尔值,Expression2是断言失败时输出的失败消息的字符串。

如果Expression1为假,则抛出一个 AssertionError,这是一个错误,而不是一个异常,也就是说是一个不可控制异常(unchecked Exception),AssertionError由于是错误,所以可以不捕获,但不推荐这样做,因为那样会使你的系统进入不稳定状态。

3.测试程序:

>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>

AssertionError

4.那什么时候应该使用assert?
1)防御型的编程
2)运行时检查程序逻辑
3)检查约定
4)程序常量
5)检查文档

6.下面是建议不要用断言的场景:

1)不要用它测试用户提供的数据
2)不要用断言来检查你觉得在你的程序的常规使用时会出错的地方。断言是用来检查非常罕见的问题。你的用户不应该看到任何断言错误,如果他们看到了,这是一个bug,修复它。
3)有的情况下,不用断言是因为它比精确的检查要短,它不应该是懒码农的偷懒方式。
4)不要用它来检查对公共库的输入参数,因为它不能控制调用者,所以不能保证调用者会不会打破双方的约定。
5)不要为你觉得可以恢复的错误用断言。换句话说,不用改在产品代码里捕捉到断言错误。
6)不要用太多断言以至于让代码很晦涩。






0 0
原创粉丝点击