在Python中,要对子目录中的所有源文件运行unittest.main(),可以使用以下方法:
import unittest
from os.path import dirname, join, abspath
from os import walk
def get_test_suite(test_dir):
test_loader = unittest.TestLoader()
test_suite = unittest.TestSuite()
for root, dirs, files in walk(test_dir):
for file in files:
if file.endswith('_test.py'):
module_name = file[:-3]
module = __import__(module_name, fromlist=[module_name])
test_suite.addTest(test_loader.loadTestsFromModule(module))
return test_suite
if __name__ == '__main__':
test_dir = join(dirname(abspath(__file__)), 'subdirectory')
unittest.TextTestRunner().run(get_test_suite(test_dir))
在这个示例中,我们首先导入了unittest库和os库中的一些函数。然后,我们定义了一个名为get_test_suite的函数,该函数接受一个参数test_dir,该参数表示包含测试文件的子目录。
在get_test_suite函数中,我们使用了os.walk来遍历子目录中的所有文件。如果文件名以“_test.py”结尾,我们就将其视为测试文件,并使用import函数将其导入到当前模块中。然后,我们使用unittest.TestLoader的loadTestsFromModule方法将测试文件添加到测试套件中。
最后,我们在主程序中调用get_test_suite函数,并使用unittest.TextTestRunner的run方法运行测试套件。
这样,我们就可以在子目录中的所有源文件中运行unittest.main()了。
领取专属 10元无门槛券
手把手带您无忧上云