解决方案,从我们的Django项目正是这样的问题:
"""Test loader for all module tests
"""
import unittest
import re, os, imp, sys
def find_modules(package):
files = [re.sub('\.py$', '', f) for f in os.listdir(os.path.dirname(package.__file__))
if f.endswith(".py")]
return [imp.load_module(file, *imp.find_module(file, package.__path__)) for file in files]
def suite(package=None):
"""Assemble test suite for Django default test loader"""
if not package: package = myapp.tests # Default argument required for Django test runner
return unittest.TestSuite([unittest.TestLoader().loadTestsFromModule(m)
for m in find_modules(package)])
if __name__ == '__main__':
unittest.TextTestRunner().run(suite(myapp.tests))
编辑:好处相比bialix的解决方案是,你可以把这个装载机anytwhere项目树,没有必要修改初始化 .py在每个测试目录中。
这里
近似复制http://stackoverflow.com/questions/912025/how-to-find-all-child-modules-in-python – 2011-09-01 07:59:41