本文参考了 Div Into Python3 以及 stackoverflow 上的一些答案

什么是单元测试

单元测试是对软件的基本组成单位进行的测试,目的是检验软件基本组成单位的正确性。

单元测试是整个以测试为中心的开发策略中的一个重要部分。编写单元测试应该安排在项目的早期,同时要让它随同代码及需求变更一起更新。

当然,任何时间编写单元测试都是有好处的。

单元测试的优点

  • 在编写代码之前,通过编写单元测试来强迫你使用有用的方式细化你的需求。
  • 在编写代码时,单元测试可以使你避免过度编码。当所有测试用例通过时,实现的方法就完成了。
  • 重构代码时,单元测试用例有助于证明新版本的代码跟老版本功能是一致的。
  • 在维护代码期间,如果有人对你大喊:你最新的代码修改破坏了原有代码的状态,那么此时单元测试可以帮助你反驳(“先生,所有单元测试用例通过了我才提交代码的...”)。
  • 在团队编码中,缜密的测试套件可以降低你的代码影响别人代码的机会,这是因为你需要优先执行别人的单元测试用例。(我曾经在代码冲刺见过这种实践。一个团队把任务分解,每个人领取其中一小部分任务,同时为其编写单元测试;然后,团队相互分享他们的单元测试用例。这样,所有人都可以在编码过程中提前发现谁的代码与其他人的不可以良好工作。)

Python 中的单元测试

这是一张很知名的玩笑式的Python学习曲线:

python_learning_curves

它确实说明了一些问题,总体上Python程序员的自我评估一直高于实际的产出,但是写了测试之后会提高生产力,掌握了装饰(bi)器之后,以为自己更牛×了,实际上并没有,因为装饰器不过是一个卡新手的语法糖。

Python 在Web方向上被国内很多中小型公司大规模使用,但是由于追求所谓的产品快速上线和"敏捷开发",很多创业公司盲目学习 Facebook 之类的公司不配备测试职位,却没有一个优秀的团队来把测试工作顺带完成,导致很多项目不重视测试,甚至不写单元测试也是常有的事。