导入
哲学
了解 Python 测试的哲学。
测试框架的优势
使用合适的测试框架具有诸多优势,包括:
- 代码更有可能正确无误。
- 代码编写通常花费的时间更少,因为调试时间被显著减少。
- 为可测试性而编写的函数往往更小且职责单一。
- 为可测试性而编写的函数能够清晰地分离计算逻辑与输入输出操作。
- 拥有测试套件后,日后修改代码会更加容易且安全。
一个优秀的测试框架能让程序员快速运行测试,通常只需一键点击即可完成,并能一眼看出是否存在错误。如果测试需要超过这种简便操作,则很可能很少被执行,甚至完全不执行,从而失去其应有的价值。
如何编写可测试的代码
为了编写可测试的代码,需注意以下几点:
- 编写大量小型函数,每个函数只完成一项任务,而不是少数几个功能繁杂的大函数。
- 在编写代码的同时编写测试,而不是事后补上测试。许多专家甚至建议在编写代码之前先编写测试,因为这有助于明确代码应实现的功能。
对于已存在的或遗留的代码,编写测试可能非常困难甚至不可能。
- 尽量减少全局变量的使用,如果可能,应完全避免。仅依赖参数值的函数更容易独立进行测试。
- 严格区分执行计算的函数与执行输入输出的函数,测试时只需关注前者。
涉及输入输出的函数需要人工干预,因此会阻碍一键式测试的实现。虽然存在测试这类函数的技术,但这些属于高级技巧,本文不予讨论。