我所在项目的一位开发人员认为,文档测试与单元测试一样好,如果一段代码经过文档测试,则不需要进行单元测试。我认为情况并非如此。任何人都可以提供一些可靠的、理想地引用的示例来支持或反对 doctest 取代单元测试的需要的论点吗?
谢谢 -丹尼尔
编辑:任何人都可以提供表明文档测试不应取代单元测试的引用吗?
最佳答案
我 (ab) 使用 doctest
代替 unittest
,回到我开始 gmpy 的时候很多年前的项目——你可以浏览它的源代码,看到所有的功能都用 doctests 进行了彻底的测试(这个功能是由一个 C 编码的 Python 扩展提供的,上次我用它进行覆盖测量时,我的覆盖率超过了 95%) .我为什么要那样做?因为 doctest
和 gmpy
都是全新的,我很好奇我能把它推到什么程度。
答案:确实很远——但绝对不值得(新鲜感消失了,但你不想重写所有测试,这就是为什么 gmpy 的测试仍然是全文档测试)。 doctests 的极端脆弱性,即使是消息中最微小的拼写错误也会破坏测试,当他们以这种方式被滥用时,这真的很麻烦。这有点像传统的集成测试,它基于将输出与“黄金”(已知良好)预期输出进行比较:第一次编写很容易,但在修复无端测试故障几年后,您会在闲暇时后悔;- ).
如果您发现 unittest
的风格繁琐,还有其他优秀的替代品仍然意味着用于单元测试,例如 py.test和 nose -- doctest
实际上是为了不同的目的(支持文档,而不是通用单元测试),当然值得添加你为文档目的编写的任何 doctests您的测试电池,不值得用它替换单元测试来进行测试维护。
关于python - Python doctest 是否不需要单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2642282/