【问题标题】:Recursively loading doctests in python在python中递归加载文档测试
【发布时间】:2017-10-26 04:30:23
【问题描述】:

我正在尝试测试一个 python 模块,它有一个单独的测试模块:

my_module/
test/
setup.py

test 模块有my_module 的单元测试,但它还需要从my_module 加载doctests。为此,我有如下load_tests函数,位于test/__init__.py

import my_module

def load_tests(loader, tests, pattern):
    # Load the unit tests from `test`
    unittests = loader.discover(start_dir=os.path.dirname(__file__), pattern=pattern)
    # Load the doctests from `my_module`
    doctests = doctest.DocTestSuite(my_module)

    tests.addTests(unittests)
    tests.addTests(doctests)
    return tests

但是,这会失败并出现错误:

Error
TypeError: object of type 'NoneType' has no len()

我做错了什么?如何在此测试加载器中从 my_module 加载所有 doctest?

【问题讨论】:

    标签: python python-2.7 unit-testing python-unittest doctest


    【解决方案1】:

    实际上,在我的示例中,实际上是 unittest 加载程序失败了,这让我认为这是 doctest 中的错误。

    但是,要回答标题中的问题,您可以像这样递归地运行 doctest:

    import doctest
    import pkgutil
    import my_module
    
    def load_tests(loader, tests, pattern):
        for importer, name, ispkg in pkgutil.walk_packages(my_module.__path__, my_module.__name__ + '.'):
            tests.addTests(doctest.DocTestSuite(name))
        return tests
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      • 2013-09-27
      相关资源
      最近更新 更多