当前位置: 首页 > 面试题库 >

Python-doctest与unittest

茹正初
2023-03-14
问题内容

我正在尝试使用Python进行单元测试,我想知道是否有人可以解释doctest和unittest的优缺点。

您将分别使用什么条件?


问题答案:

两者都很有价值。我用doctest和鼻子代替了unittest。我将doctest用于测试给出了实际用作文档的用法示例的情况。通常,我不会对这些测试进行全面的测试,仅是为了提供信息。我实际上是在反向使用doctest:不是根据我的doctest测试我的代码是否正确,而是根据代码检查我的文档是否正确。

原因是我发现全面的doctest会使您的文档过于混乱,因此您要么会得到不可用的文档字符串,要么会得到不完整的测试。

对于实际测试 代码 ,目标是彻底测试每种情况,而不是通过示例来说明这样做是什么,我认为这是一个不同的目标,我认为其他框架可以更好地实现。



 类似资料:
  • doctest 是一个新的 C++ 测试框架。与其他功能丰富的替代方案相比,编译时(by orders of magnitude)和运行时是最快的。它提供了编译语言(如 D/Rust/Nim)的能力,并通过提供一个快速,透明和灵活的测试运行器与简洁的界面,可直接在生产代码中编写测试。 使用自动记录测试(self-registering test )编译为可执行文件的完整示例:

  • 问题内容: 我想写一个像这样的doctest: 有什么办法吗?我认为切换到单元测试会更有意义,但我很好奇是否可以指定不适合doctest中的测试的输出范围。 谢谢! 问题答案: 使用,您可以用来表示“在此处匹配任何字符串”。您可以使用doctest指令设置选项,以使其仅在一个测试用例中处于活动状态:在线文档中的一个示例是: 如果您希望doctest选项始终处于活动状态,则可以将其作为参数传递给您使

  • 开始 # doctest_simple.py def my_function(a, b): """ >>> my_function(2, 3) 6 >>> my_function('a', 3) 'aaa' """ return a * b # doctest_simple_with_docs.py def my_function(a, b

  • 问题内容: 我正在为输出字典的函数编写doctest。doctest看起来像 当我运行它时,它失败并 关于此失败原因的最佳猜测是doctest不是在检查字典是否相等,而是在检查相等性。这篇文章表明,有某种方法可以诱骗doctest检查字典是否相等。我怎样才能做到这一点? 问题答案: Doctest本身并不检查相等性,它只是检查输出是否完全相同。您必须确保打印的内容对于相同的词典都是相同的。您可以使

  • 我有一个函数,使用。我想给它加一个留档测试。但是,看起来get_type_hints无法解析doctest中定义的类型。 以下是一个简化的示例: 当运行它与它抛出。

  • 问题内容: 关于Python和CPython (Jython,IronPython) 的所有这些大惊小怪,我不明白: python.org提到CPython是: Python的“传统”实现(绰号为CPython) 另一个堆栈溢出问题提到: CPython是Python的默认字节码解释器,它是用C编写的。 老实说,我并没有理解这两种解释的实际含义,但是我认为, 如果我使用CPython,这意味着当我

  • 本文向大家介绍Python与Ruby,包括了Python与Ruby的使用技巧和注意事项,需要的朋友参考一下 让我们看看Python和Ruby之间的主要区别。 Python Ruby 它支持书写功能 它不支持书写功能 Web框架,例如Django,Flask,Bottle等。, Web框架,例如Ruby on Rail,Hanami,Sinatra等, Python不支持mixins Ruby支持m

  • 首先要明确的是处理面向对象,还有很多编程语言范式,Python 本身就是一个支持面相对象和函数式编程的多范式编程语言。 编程范式的存在是为了解决的代码复用和共享问题。 JavaScript 主要是一门面向原型的编程语言,但是吸收了众多函数式编程的思想,却缺乏常见的函数式编程基础功能。 const 与常量 在 ES5 及之前的规范中,JS 声明对象时只能使用 var,ES6 中新增了 const 和