我正在尝试测试一个python模块,它有一个单独的测试模块:
my_module/
test/
setup.py
test
模块具有my_module
的单元测试,但还需要从doctests
加载my_module
。为此,我有以下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
中的所有doctests?
答案 0 :(得分:0)
实际上,在我的例子中,实际上是unittest
加载器失败了,让我认为这是doctest
中的错误。
但是,要回答标题中的问题,您可以递归运行这样的doctests:
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