15.5. 小结
Description: Python from novice to pro
Keywords: Python, Dive Into Python, tutorial, object-oriented, programming, documentation, book, free

# 深入 Python :Dive Into Python 中文版 Python 从新手到专家 [Dip_5.4b_CPyUG_Release] | Find:

## 15.5. 小结

单元测试是一个强大的概念，使用得当的话既可以减少维护成本又可以增加长期项目的灵活性。同样重要的是要意识到单元测试并不是“灵丹妙药”，也不是“银弹”。编写好的测试用例很困难，保持其更新更需要磨练 (特别是当顾客对修复严重的 Bug 大呼小叫之时)。单元测试不是其它形式测试的替代品，比如说功能性测试、集成测试以及可用性测试。但它切实可行且功效明显，一旦相识，你会反问为什么以往没有应用它。

这一章涵盖了很多内容，有很多都不是 Python 所特有的。很多语言都有单元测试框架，都要求你理解相同的基本概念：

- 测试用例的设计方针是目的单一、可以自动运行、互不干扰。
- 在被测试代码编写之前 编写测试用例。
- 编写测试有效输入的测试用例并检查正确的结果。
- 编写测试无效输入的测试用例并检查正确的失败。
- 为描述 Bug 或反映新需求而编写和升级测试用例。
- 为改进性能、可伸缩性、可读性、可维护性和任何缺少的特性而无情地重构。

另外，你应该能够自如地做到如下 Python 的特有工作：

- 继承 `unittest.TestCase` 生成子类并为每个单独的测试用例编写方法。
- 使用 `assertEqual` 检查已知结果的返回。
- 使用 `assertRaises` 检查函数是否引发已知异常。
- 在 `if __name__` 子句中调用 `unittest.main()` 来一次性运行所有测试用例。
- 以详细 (verbose) 或者普通 (regular) 模式运行单元测试

### 进一步阅读

- XProgramming.com 有多种语言的 单元测试框架 的下载链接。