Python doctest是否消除了对单元测试的需要?

2024-06-17 15:48:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我所在项目的一位开发人员认为doctest和单元测试一样好,如果一段代码被doctested,它就不需要进行单元测试。我不相信这是事实。有谁能提供一些可靠的、理想的例子来支持或反对doctest取代单元测试的必要性的论点吗?在

谢谢你 -丹尼尔

编辑:有谁能提供一个参考,说明doctesting不应该取代单元测试吗?在


Tags: 项目代码编辑开发人员单元测试doctest例子事实
2条回答

事实上没有支持或反对doc测试的论据。它们只是测试。实际上,对于python 2.4,有一种方法可以根据您的doctest创建单元测试套件: http://docs.python.org/library/doctest.html#unittest-api

在某种意义上,您可以将doc测试看作单元测试的一个子集,至少从功能的角度来看是这样的。在

但是python文档建议使用doctest进行以下操作:

  • 文档中的示例
  • 回归检验
  • 编写教程文档

他们的论点是,如果你在文档中编写测试,你将被迫同时编写更好的文档和测试。与单独编写单元测试不同的是,很少添加足够的文档,而且它们往往停滞不前并过时。在

参见: http://docs.python.org/library/doctest.html#soapbox

我想,对于集成测试这样的东西,编写doctest会更困难。但是,正如您在python和Django上看到的那样,它们广泛地使用doctest,从而生成更易于理解的文档和教程。在

这完全取决于你的项目。没有“正确”的测试方法。在

另外,我建议您看看Code Complete 2书,因为您可能会发现单元测试并不是确保软件无故障的最佳方法。在

Python标准库中有一个具体的例子,它让我相信单靠doctest是不够的,即decimal模块。它有超过60000个单独的测试用例(在Lib/test/decimaltestdata中);如果所有这些都重写为doctest,十进制模块将变得非常笨拙。测试的数量可能会减少,同时仍能提供良好的覆盖率,但许多数值算法非常复杂,以至于您需要大量的单独测试来覆盖所有可能的分支组合。在

相关问题 更多 >