Посмотрите на unittest.TestLoader (https://docs.python.org/library/unittest.html#loading-and-running-tests)
И os.walk (https://docs.python.org/library/os.html#files-and-directories)
Вы должны иметь возможность просматривать дерево пакетов, используя TestLoader для создания пакета, который затем можно запустить.
Что-то вроде этого.
runner = unittest.TextTestRunner()
superSuite = unittest.TestSuite()
for path, dirs, files in os.walk( 'path/to/tree' ):
# if a CVS dir or whatever: continue
for f in files:
# if not a python file: continue
suite= unittest.defaultTestLoader.loadTestsFromModule( os.path.join(path,f)
superSuite .addTests(suite ) # OR runner.run( suite)
runner.run( superSuite )
Вы можете либо пройти по дереву, просто запустив каждый тест (runner.run(suite)
) или , вы можете накопить superSuite
всех отдельных наборов и запустить всю массу как один тест (runner.run( superSuite )
).
Вам не нужно делать и то и другое, но я включил оба набора предложений в приведенный выше (непроверенный) код.