def run(self): ''' Finds all the tests modules in tests/, and runs them, exiting after they are all done ''' from tests.server import TestServer from tests.test_core import WebserviceTest log.set_verbosity(self.verbose) if self.verbose >= 2: self.announce('Setting log level to DEBUG ({0})'.format(logging.DEBUG), level = 2) logging.basicConfig(level = logging.DEBUG) testfiles = [ ] if self.testmodule is None: for t in glob(pjoin(self._dir, 'tests', self.test_prefix + '*.py')): if not t.endswith('__init__.py'): testfiles.append('.'.join(['tests', splitext(basename(t))[0]])) else: testfiles.append(self.testmodule) server = TestServer(daemonise = True, silent = (self.verbose < 3)) server.start() WebserviceTest.TEST_PORT = server.port self.announce("Waiting for test server to start on port " + str(server.port), level=2) time.sleep(1) self.announce("Test files:" + str(testfiles), level=2) tests = TestLoader().loadTestsFromNames(testfiles) t = TextTestRunner(verbosity = self.verbose) result = t.run(tests) failed, errored = map(len, (result.failures, result.errors)) exit(failed + errored)