对于我的第一次勇敢的尝试,我想:“如果我只是在文件中导入所有的测试模块,然后调用
unittest.main()
这个东西,它会工作,对吧?” 好吧,结果证明我错了。import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
if __name__ == "__main__":
unittest.main()
这个方法不起作用,我得到的结果是:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
为了我的第二次尝试,我想,好吧,也许我可以尝试以一种更“手动”的方式完成整个测试过程。所以我尝试在下面这样做:
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print testSuite
result = unittest.TestResult()
testSuite.run(result)
print result
#Ok, at this point I have a result
#How do I display it as the normal unit test command line output?
if __name__ == "__main__":
unittest.main()
这个方法也没有成功,但是它似乎离成功很近了!
$ python all_test.py
<unittest.TestSuite tests=[<unittest.TestSuite tests=[<unittest.TestSuite tests=[<test_main.TestMain testMethod=test_respondes_to_get>]>]>]>
<unittest.TestResult run=1 errors=0 failures=0>
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
我似乎有一套测试用例,并且我可以执行结果。我有点担心它显示只有 run=1
,应该是run=2
,但这已经有进展了。但是我该如何传递和显示结果给主函数?或者说,我该如何让它正常运行,以便我只需运行此文件,并在此过程中运行此目录中的所有单元测试?