我正在编写某种自动化测试套件,我想确保包“tests”中包含的类在运行时自动导入到主命名空间中,而不是将它们添加到 __init__ 包的文件。
这是我目前的脚本:
import os
for dirpath, dirnames, filenames in os.walk('tests'):
for filename in filenames:
if filename.lower().endswith(('.pyc', '__init__.py')): continue
module = ".".join([dirpath, filename.split('.')[0]])
print module
如果我使用 modulename = __import__(module),类将添加到模块“modulename”,而不是主命名空间。
我的问题是,如何将它们导入当前命名空间?
所以我可以做这样的事情:
testcase = TestCase()
testcase.run()
results = testcase.results()
或主脚本中的任何内容,而无需显式导入类。
提前致谢!
感谢大家的回复和帮助我。
请您参考如下方法:
要从某个模块获取类,可能有更好的方法,但这里是让您入门的通用方法
mod = __import__("mod")
for klass in vars(mod):
o = getattr(mod, klass)
if type(o) == type:
print o
