编写便于测试的代码有什么建议?

16 投票
3 回答
4624 浏览
提问于 2025-04-16 10:06

有没有什么写出容易测试的Python代码的建议呢?

我认为:

  • 一个方法只做一件事。
  • 不要使用副作用。

还有其他建议吗?

3 个回答

6

Alfred的回答很棒,但我想给提问者补充一点:

如果你想读一本关于用pytest进行Python测试的书,我推荐你看看Brian Okken写的《Python Testing with pytest: Simple, Rapid, Effective, and Scalable》。这本书非常适合你想做的事情,而且是最新的(2017年9月出版)。

7

编写方法时,不要依赖其他模型或资源。如果方法需要使用这些东西,应该把它们作为参数传递给方法。

20

TDD

我给你最好的建议就是先写测试代码,然后再写实际的代码,这就是所谓的测试驱动开发(TDD)。Uncle Bob 提出了三条简单的规则来帮助你进行 TDD:

  1. 你不能写任何实际的代码,除非是为了让一个失败的单元测试通过。
  2. 你不能写超过必要的单元测试代码,直到它失败为止;编译失败也算是失败。
  3. 你不能写超过必要的实际代码,直到让那个失败的单元测试通过为止。

特别要记住这句话:

如果你仔细想想,你会发现你根本无法写太多代码,而不去编译和执行一些东西。实际上,这就是重点。

编写可测试的代码

你还可以看看谷歌测试专家写的《编写可测试的代码》(虽然是针对Java的,但大部分内容也适用于Python)。你还应该下载并阅读完整的PDF。下面是一些快速回顾:

  1. 构造函数要做实际工作
  2. 深入了解协作对象
  3. 脆弱的全局状态和单例模式
  4. 类的功能过于复杂

撰写回答