跳转到主要内容

使用unittest运行器测试doctests的对象化API。

项目描述

使用unittest运行器测试doctests的对象化API。

提供扩展doctest模块的类,以实现与unittest更好的集成。

它与Python 2.4的doctest unittest API不同,因为

  • 新的unittest.TestLoader子类允许使用unittest风格的实例加载doctests的TestCases,支持以更自然的方式构建复杂的测试套件,并简化了从doctest示例构建的TestCase的专用实例的使用。

  • 其他加载器允许用户在单步中从TestCase子类和doctests(以及任何其他格式)中提取TestCase实例。

  • 在这种情况下,unittest.TestResult实例报告单个示例是否已成功执行,或者是否失败或引发意外异常。以前,TestResult对象包含doctest模块输出的整个报告。

  • 测试分析无需进一步解析即可检索有关失败的详细信息。

  • 新的unittest API为doctest添加了面向对象的功能,并消除了具有大签名的函数。

  • 收集测试结果不需要使用DocTestRunner输出流。

  • 现在可能有一个新的doctest TestCase层次结构,例如,setUp和tearDown可以在TestCase层次结构中重新定义,而不是将这些方法作为函数的参数提供(违反OOP哲学和逻辑);或者甚至可能以自定义方式表示失败和错误。

  • 允许对使用doctest编写的测试执行回归测试。

  • 修复了与从命令行指定不同详细程度级别到unittest.TestProgram(别名main)相关的小错误。

  • 默认加载doctests的测试用例以及以前由unittest.TestLoader加载的测试用例。

它与Python 2.4的doctest unittest API相似,因为

  • 提供与TestProgram和unittest测试运行器的集成。

  • 允许通过doctest选项参数化doctest行为。

更详细的解释可以在以下文章中找到

“Doctest和unittest…现在它们将幸福地生活在一起”,O. Lang(2008)Python论文,第3卷,第1期,第31页:51

注意:此模块的内容最初由包含在PyOOP包中的模块oop.utils.testing实现。

0.2.3版本的新特性

  • 实现了Suite Fixture Setup测试模式(即在运行所有交互式示例之前设置一次固定装置,并在运行之后进行清理)。

  • 当检测到失败或错误时,模块在TestResult实例的回溯中是隐藏的。

  • 通过style参数在PackageTestLoader中添加了对多种模式匹配样式的支持。默认情况下使用标准正则表达式(即style=REGEX)。

  • 现在在使用PackageTestLoader时,可以使用Unix文件名模式匹配(fnmatch模块)。所需做的只是指定style=UNIX

  • 在先前版本的多个函数中,默认参数包含具有可变对象的参数。有关默认参数的TiP列表上的消息解释了为什么这真的很危险。这个问题已经得到修复。感谢Scott David Daniels 报告默认参数的问题和Jesse Noller 关于默认参数的提示

0.2.2版本的新特性

  • 修复了错误... 类PackageTestLoader加载了包子级中定义的测试,但没有加载顶层模块中指定的测试。现在在loadTestsFromModule方法中提供的模块中指定的测试也包含在结果测试套件中。

0.2.1版本的新特性

  • PackageTestLoader类已添加到dutest模块中。它使用另一个加载器加载包层次结构中找到的所有测试。后者用于检索符合指定模式的每个模块中包含的测试。

  • oop.utils.dutest中的DocTestLoader类在没有在模块中找到doctests时不会引发ValueError异常。这是doctest的行为。这之前一直被认为是假设的,但现在在将这些加载器与用于检索跨包层次结构中定义的所有测试的包层次结构的实例(如PackageTestLoader)一起使用时,已成为一个头疼的问题。

0.1.2版本的新特性

  • 修复了错误... 因为在初始化器中将None提供给测试方法名称,所以无法实例化DocTestCase实例。这个错误在执行测试时以某种方式隐藏了,甚至当导入oop.utils.dutest(它实际上是相同的实现)时也是如此。

0.1.1版本的新特性

  • oop.utils.testing.VerboseTestProgram已移动到dutest模块。版本0.1.0没有包括它。感谢Michal Kwiatkowski通知我这一点[1]

  • 默认测试加载器和运行器已添加到此模块。默认加载器是 MultiTestLoader 的实例,它结合了由 unittest.TestLoaderdutest.DocTestLoader 加载的测试套件。

  • dutest.maindutest.VerboseTestProgram 的别名。此类修复了我发现的一个小错误(我认为是这样),即在命令行中指定不同的详细程度时,我在 unittest.TestProgram 中发现了这个错误。它还默认使用 dutest.defaultTestLoader 而不是 unittest.defaultTestLoader

0.1.0 版本的新特性

doctest / unittest 扩展

  • 一个新的 unittest API,用于将 doctest 与 unittest 运行器集成。

  • 它允许报告测试运行期间执行的每个交互示例的单独结果。在相应的 TestResult 实例中创建一个单独的条目,包含预期值和实际结果。

  • 由于个别示例的匹配是由 TestResult 的实例逐个报告的,因此自动化测试后的活动(例如,自动测试分析)变得相当容易。以前访问这些信息需要额外的工作(即,必须解析 doctest 提供的完整报告)。

  • 您不需要使用 DocTestRunner 输出流来收集测试结果。

  • 现在可以创建一个新的 TestCase 子类层次结构(扩展 DocTestCase 类),例如,可以在 TestCase 的层次结构中重新定义 setUptearDown 方法,而不是将这些方法作为参数传递给函数(违反面向对象哲学和逻辑);或者甚至以自定义方式表示失败和错误。

  • 一个新的 TestLoader 子类允许使用 unittest 风格加载检查 doctest 匹配的 TestCase。它提供了与 TestProgram 的集成,支持以更自然的方式构建复杂的 TestSuite,并简化了从 doctest 示例构建的专业 TestCase 实例的使用。

  • 允许对使用 doctest 编写的测试执行回归测试。

支持者