1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| #!/usr/bin/env python3
"""
This file launches all the tests.
Source used :
http://agiletesting.blogspot.com/2005/01/python-unit-testing-part-1-unittest.html
"""
import inspect
import unittest
import tool_test_all
VERBOSE = True
#######################################
# SEEKING FOR THE CLASSES DOING TESTS #
#######################################
def isTestLike(text):
return text.lower().startswith('test')
def findTestClass(oneModule, verbose = True, depth = 0):
"""
This functions looks for classes whose name starts with "test..."
in module whose name also starts with "test...". The case used
is not important.
"""
if verbose:
print('{0}+ Working in {1}'.format(' ' *depth ,
oneModule.__name__))
answer = []
# We look for sub modules.
for nameModuleFound, oneModuleFound in inspect.getmembers(oneModule,
inspect.ismodule):
if isTestLike(nameModuleFound):
answer += findTestClass(oneModule = oneModuleFound,
verbose = True,
depth = depth + 1)
# We look for sub modules.
for nameClassFound, oneClassFound in inspect.getmembers(oneModule,
inspect.isclass):
if isTestLike(nameClassFound):
if verbose:
print('{0}- One test-like class found ---> {1}'.format(' ' *(depth+1),
nameClassFound))
answer.append(oneClassFound)
return answer
if VERBOSE:
print('='*70)
CLASSES_OF_TESTS = findTestClass(oneModule = tool_test_all,
verbose = VERBOSE)
if VERBOSE:
print('='*70,
'',
sep = "\n")
########################################
# LAUCHING ALL THE CLASSES DOING TESTS #
########################################
def suiteOfTests():
suiteOfTests = unittest.TestSuite()
for oneClass in CLASSES_OF_TESTS:
suiteOfTests.addTest(unittest.makeSuite(oneClass))
return suiteOfTests
# Here we go...
if CLASSES_OF_TESTS:
unittest.TextTestRunner(verbosity=2).run(suiteOfTests())
else:
print('No test has been found...') |
Partager