我想从单个模块运行一组模块(glob:invenio.webtag*)的doctest,但我需要一个方法导入所有这些(且仅这些)模块并对所有这些模块运行 doctest.testmod()。有什么想法吗?
编辑:解决方案:
import doctest
import glob
import os
import pkgutil
pkgpath = pkgutil.extend_path([], 'invenio')[0]
for module_path in glob.glob(pkgpath + '/webtag*.py'):
module_name = os.path.splitext(os.path.basename(module_path))[0]
module = __import__('invenio.' + module_name)
doctest.testmod(module)
请您参考如下方法:
可以使用 __import__ 动态加载模块,例如
my_module = __import__("mymodule")
然后传递给 testmod 例如
doctest.testmod(my_module)
假设您可以使用 glob.glob 构建匹配模块列表或过滤来自 os.listdir 的结果您应该能够使用这种方法。
更新:
要导入 invenio.webtag,请尝试使用 fromlist:
module = __import__('invenio.webtag', globals(), locals(), ['invenio'], -1)
参见 this documentation求解释。
