def run(self): # pylint: disable=E0202 """ invoked by the command """ tests = unittest.TestLoader().discover('src/test', pattern='test*.py') result = XMLTestRunner(output='test-reports').run(tests) if result.wasSuccessful(): return 0 return 1
def main(): from unittest import TestLoader, TestSuite from xmlrunner import XMLTestRunner import db_checks suites = [ TestLoader().loadTestsFromTestCase(db_checks.Test), ] tests_results_dir = "test-reports-python" result = XMLTestRunner(output=tests_results_dir).run(TestSuite(suites)) if not result.wasSuccessful(): sys.exit(1)
class testResult(object): def __init__(self, testClass): self.cTest = testClass self.outLogFile = self.cTest.get_out_path('test_result.log') def runTest(self, isSilent=False): ''' if isSilent is False then sys.stderr will be used as output of result. Otherwise output will be saved to the file. Read documentation of TextTestRunner for more information. ''' paramDic = {'stream': None, 'verbosity': 2, 'output': 'test-reports'} if isSilent: paramDic['stream'] = open(self.outLogFile, 'w') suite = unittest.TestLoader().loadTestsFromTestCase(self.cTest) self.result = XMLTestRunner(**paramDic).run(suite) if paramDic['stream']: paramDic['stream'].close() self.checkResult(isSilent) def checkResult(self, isSilent=False): ''' Value of isSilent is processed conversely to the runTest method. if isSilent is False then output will be saved to the file. Otherwise output will be printed to the sys.stderr. ''' if self.result.wasSuccessful(): return myOutFile = sys.stderr if not isSilent: myOutFile = open(self.outLogFile, 'w') if self.result.errors: print('ERRORS:', sep='\n', end='\n', file=myOutFile) for r in self.result.errors: print(*r, sep='\n', end='\n', file=myOutFile) if self.result.failures: print('FAILURES:', sep='\n', end='\n', file=myOutFile) for r in self.result.failures: print(*r, sep='\n', end='\n', file=myOutFile) myOutFile.close()
# setting up logging log_opt = args['logging'] logger = logging.getLogger(globals.LOGGER_NAME) if log_opt == 'INFO': logger.level = logging.INFO elif log_opt == 'DEBUG': logger.level = logging.DEBUG test_context = TestContext( ENGINE_DIRECTORY, DATA_DIRECTORY, args['eventserver_ip'], int(args['eventserver_port'])) tests_dict = get_tests(test_context) test_names = args['tests'] tests = [] if test_names is not None: tests = [t for name, t in tests_dict.items() if name in test_names] else: tests = tests_dict.values() # Actual tests execution event_server_process = srun_bg('pio eventserver --ip {} --port {}' .format(test_context.es_ip, test_context.es_port)) time.sleep(5) result = XMLTestRunner(verbosity=2, output='test-reports').run( unittest.TestSuite(tests)) event_server_process.kill() if not result.wasSuccessful(): sys.exit(1)
logger.level = logging.INFO elif log_opt == 'DEBUG': logger.level = logging.DEBUG test_context = TestContext(ENGINE_DIRECTORY, DATA_DIRECTORY, args['eventserver_ip'], int(args['eventserver_port'])) tests_dict = get_tests(test_context) test_names = args['tests'] tests = [] if test_names is not None: tests = [t for name, t in tests_dict.items() if name in test_names] else: tests = tests_dict.values() # Actual tests execution es_wait_time = 25 logger.info( "Starting eventserver and waiting {}s for it to initialize".format( es_wait_time)) event_server_process = srun_bg('pio eventserver --ip {} --port {}'.format( test_context.es_ip, test_context.es_port)) time.sleep(es_wait_time) result = XMLTestRunner(verbosity=2, output='test-reports').run( unittest.TestSuite(tests)) event_server_process.kill() if not result.wasSuccessful(): sys.exit(1)