编写便于测试的代码有什么建议?
有没有什么写出容易测试的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:
- 你不能写任何实际的代码,除非是为了让一个失败的单元测试通过。
- 你不能写超过必要的单元测试代码,直到它失败为止;编译失败也算是失败。
- 你不能写超过必要的实际代码,直到让那个失败的单元测试通过为止。
特别要记住这句话:
如果你仔细想想,你会发现你根本无法写太多代码,而不去编译和执行一些东西。实际上,这就是重点。
编写可测试的代码
你还可以看看谷歌测试专家写的《编写可测试的代码》(虽然是针对Java的,但大部分内容也适用于Python)。你还应该下载并阅读完整的PDF。下面是一些快速回顾:
- 构造函数要做实际工作
- 深入了解协作对象
- 脆弱的全局状态和单例模式
- 类的功能过于复杂