错误、调试和测试_单元测试
学习日期:2016年9月28日
学习课程:错误、调试和测试 - 廖雪峰的官方网站
错误
在程序运行过程中,总会遇到各种各样的错误。有可能是程序编写的错误,有可能是用户输入的错误,还有可能是完全无法在程序运行过程中预测的错误(异常),比如磁盘满了,网络断了。
Python内置的
try...except...finally
用来处理错误十分方便。出错时,会分析错误信息并定位错误发生的代码位置才是最关键的。程序也可以主动抛出错误(通过raise
语句,让调用者来处理相应的错误。但是,应该在文档中写清楚可能会抛出哪些错误,以及错误产生的原因。
调试
- 跟踪程序的执行,查看变量的值是否正确,这个过程称为调试。
- 调试有这么几种方法。
- 用
print()
。(很麻烦) - 用
assert
。(启动Python解释器时可以用-O参数来关闭assert) logging
(比较好用)- 用一个好的IDE,超赞。
- 用
测试
- 测试分为单元测试和文档测试。
- 编写测试也很重要。有了良好的测试,就可以在程序修改后反复运行,确保程序输出符合我们编写的测试。
单元测试
- 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。(
unittest
模块) - 单元测试可以有效地测试某个程序模块的行为,是未来重构代码的信心保证。
- 单元测试的测试用例要覆盖常用的输入组合、边界条件和异常。
- 单元测试代码要非常简单,如果测试代码太复杂,那么测试代码本身就可能有bug。
- 单元测试通过了并不意味着程序就没有bug了,但是不通过程序肯定有bug。
文档测试
- Python内置的“文档测试”(
doctest
)模块可以直接提取注释中的代码并执行测试。 doctest
非常有用,不但可以用来测试,还可以直接作为示例代码。通过某些文档生成工具,就可以自动把包含doctest
的注释提取出来。用户看文档的时候,同时也看到了doctest
。