我最近从鼻子切换到新的unittest2包,用于我的python单元测试需求。它做了我想要的一切,除了我无法通过它的“发现”命令来识别代码中的doctests这一事实 - 我仍然需要使用nose来运行它们。这是没有实现还是我在这里缺少什么?
答案 0 :(得分:3)
Unit2仅发现常规的Python测试。为了让它运行你的doctests,我担心你需要写一些最小的样板。另外:即将推出的插件架构可以轻松实现其中一些任务的自动化。
与此同时。你可能想看看tox(由unittest2创建者描述)http://www.voidspace.org.uk/python/weblog/arch_d7_2010_07_10.shtml
答案 1 :(得分:1)
告诉unit2关于你的doctests的样板实际上是在当前的doctest文档中给出的,尽管我花了几分钟才找到它:
http://docs.python.org/library/doctest.html#unittest-api
请注意,您可以将模块名称传递给DocTestSuite
构造函数,而不必自己导入模块,这样可以将样板文件的长度减半;它只需要看起来像:
from doctest import DocTestSuite
from unittest import TestSuite
def load_tests(loader, tests, pattern):
suite = TestSuite()
suite.addTests(DocTestSuite('my.module.one'))
suite.addTests(DocTestSuite('my.module.two'))
suite.addTests(DocTestSuite('my.module.three'))
return suite