def test(): """Runs the tests without code coverage""" tests = unittest.TestLoader().discover('project/tests', pattern='test*.py') result = unittest.TextTestRunner(verbosity=2).run(tests) if result.wasSuccessful(): return 0 sys.exit(result)
def run(self, test): "Run the given test case or test suite." result = self._makeResult() registerResult(result) result.failfast = self.failfast result.buffer = self.buffer startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time() timeTaken = stopTime - startTime result.printErrors() if hasattr(result, 'separator2'): self.stream.writeln(result.separator2) run = result.testsRun self.stream.writeln("Ran %d test%s in %.3fs" % (run, run != 1 and "s" or "", timeTaken)) self.stream.writeln() expectedFails = unexpectedSuccesses = skipped = 0 try: results = map(len, (result.expectedFailures, result.unexpectedSuccesses, result.skipped)) except AttributeError: pass else: expectedFails, unexpectedSuccesses, skipped = results infos = [] if not result.wasSuccessful(): self.stream.write("FAILED") failed, errored = map(len, (result.failures, result.errors)) if failed: infos.append("failures=%d" % failed) if errored: infos.append("errors=%d" % errored) else: self.stream.write("OK") if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: self.stream.writeln(" (%s)" % (", ".join(infos),)) else: self.stream.write("\n") return result
def run(self, test): "Run the given test case or test suite." result = self._makeResult() registerResult(result) result.failfast = self.failfast result.buffer = self.buffer startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time() timeTaken = stopTime - startTime run = result.testsRun self.log.info("Ran %d test%s in %.3fs", run, run != 1 and "s" or "", timeTaken) expectedFails = unexpectedSuccesses = skipped = 0 try: results = map(len, (result.expectedFailures, result.unexpectedSuccesses, result.skipped)) except AttributeError: pass else: expectedFails, unexpectedSuccesses, skipped = results infos = [] summary = StringIO() lvl = logging.INFO if not result.wasSuccessful(): summary.write("FAILED") lvl = logging.ERROR failed, errored = map(len, (result.failures, result.errors)) if failed: infos.append("failures=%d" % failed) if errored: infos.append("errors=%d" % errored) else: summary.write("OK") if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: summary.write(" (%s)" % (", ".join(infos),)) self.log.log(lvl, summary.getvalue()) return result
def _render_result(self, result, boot_time_taken, tests_time_taken): self._echo() if self.verbosity > 0: self._print_errors(result) if result.wasSuccessful(): fg = 'green' outcome = 'SUCCESS' else: fg = 'red' outcome = 'FAILURE' if self.verbosity > 1: self._fill('=', fg=fg) self._echo(outcome, fg=fg, bold=True) counts = [('tests ran', result.testsRun)] display = { 'expectedFailures': 'expected failures', 'notImplemented': 'not implemented', 'unexpectedSuccesses': 'unexpected successes', } for bit in [ 'failures', 'errors', 'expectedFailures', 'notImplemented', 'unexpectedSuccesses', 'skipped' ]: count = len(getattr(result, bit)) if count: counts.append((display.get(bit, bit), count)) for bit, count in counts: self._echo(f' {bit}: ', nl=False) self._echo(f'{count}', bold=True) self._echo() self._echo(f'Running times: ') if boot_time_taken: self._echo(' bootstrap: ', nl=False) self._echo(self._format_time(boot_time_taken), bold=True) self._echo(' tests: ', nl=False) self._echo(self._format_time(tests_time_taken), bold=True) if boot_time_taken: self._echo(' total: ', nl=False) self._echo(self._format_time(boot_time_taken + tests_time_taken), bold=True) self._echo() return result
def run(self, test): "Run the given test case or test suite." result = self._makeResult() registerResult(result) result.failfast = self.failfast result.buffer = self.buffer startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time() timeTaken = stopTime - startTime run = result.testsRun self.log.info("Ran %d test%s in %.3fs", run, run != 1 and "s" or "", timeTaken) expectedFails = unexpectedSuccesses = skipped = 0 try: results = map(len, (result.expectedFailures, result.unexpectedSuccesses, result.skipped)) except AttributeError: pass else: expectedFails, unexpectedSuccesses, skipped = results infos = [] summary = StringIO() lvl = logging.INFO if not result.wasSuccessful(): summary.write("FAILED") lvl = logging.ERROR failed, errored = map(len, (result.failures, result.errors)) if failed: infos.append("failures=%d" % failed) if errored: infos.append("errors=%d" % errored) else: summary.write("OK") if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: summary.write(" (%s)" % (", ".join(infos), )) self.log.log(lvl, summary.getvalue()) return result
def cov(): """Runs unit tests with coverage""" tests = unittest.TestLoader().discover('project/tests') result = unittest.TextTestRunner(verbosity=2).run(tests) if result.wasSuccessful(): COV.stop() COV.save() print("Coverage summary:") COV.report() COV.html_report() COV.erase() return 0 sys.exit(result)
def tests(): """ Runs the tests without code coverage """ loader = unittest.defaultTestLoader suite = unittest.TestSuite() for test_module in loader.discover('core/tests', pattern='test*.py'): suite.addTest(test_module) result = unittest.TextTestRunner(verbosity=1).run(suite) if result.wasSuccessful(): return 0 return 1
def _render_result(self, result, boot_time_taken, tests_time_taken): self._echo() if self.verbosity > 0: self._print_errors(result) if result.wasSuccessful(): fg = 'green' outcome = 'SUCCESS' else: fg = 'red' outcome = 'FAILURE' if self.verbosity > 1: self._fill('=', fg=fg) self._echo(outcome, fg=fg, bold=True) counts = [('tests ran', result.testsRun)] for bit in ['failures', 'errors', 'expectedFailures', 'unexpectedSuccesses', 'skipped']: count = len(getattr(result, bit)) if count: counts.append((bit, count)) for bit, count in counts: self._echo(f' {bit}: ', nl=False) self._echo(f'{count}', bold=True) self._echo() self._echo(f'Running times: ') if boot_time_taken: self._echo(' bootstrap: ', nl=False) self._echo(self._format_time(boot_time_taken), bold=True) self._echo(' tests: ', nl=False) self._echo(self._format_time(tests_time_taken), bold=True) if boot_time_taken: self._echo(' total: ', nl=False) self._echo(self._format_time(boot_time_taken + tests_time_taken), bold=True) self._echo() return result
def run(self, test): "Run the given test case or test suite." result = self._makeResult() startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time() timeTaken = stopTime - startTime result.printErrors() self.stream.writeln(result.separator2) run = result.testsRun self.stream.writeln("Ran %d test%s in %.3fs" % (run, run != 1 and "s" or "", timeTaken)) self.stream.writeln() results = map(len, (result.expectedFailures, result.unexpectedSuccesses, result.skipped)) expectedFails, unexpectedSuccesses, skipped = results infos = [] if not result.wasSuccessful(): self.stream.write("FAILED") failed, errored = map(len, (result.failures, result.errors)) if failed: infos.append("failures=%d" % failed) if errored: infos.append("errors=%d" % errored) else: self.stream.write("OK") if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: self.stream.writeln(" (%s)" % (", ".join(infos), )) else: self.stream.write("\n") return result
def run(self, test): "Run the given test case or test suite." # Load the json file first, so a student can't overwrite it... with open('wsuvtest.json') as fin: config = json.load(fin) result = super(WSUVTextTestRunner, self).run(test) run = result.testsRun failed, errored = 0, 0 if not result.wasSuccessful(): failed, errored = len(result.failures), len(result.errors) pts = (run - failed - errored) * 1.0 * config['scores']['Correctness'] / run outstr = [ "Total points %.1f out of %.1f" % (pts, config['scores']['Correctness']), '{"scores": {"Correctness": %.1f}}' % (pts) ] return "\n".join(outstr)
def run(self, test): """Run the given test case or test suite.""" self.resultclass.number_of_tests = test.countTestCases() if self.verbosity >= 2: self.stream.writeln(colored('\nTesting:\n', attrs=['bold'])) else: self.stream.writeln('Testing...') self._check_suites(test) result = self._makeResult() registerResult(result) result.failfast = self.failfast result.buffer = self.buffer with warnings.catch_warnings(): if self.warnings: # if self.warnings is set, use it to filter all the warnings warnings.simplefilter(self.warnings) # if the filter is 'default' or 'always', special-case the # warnings from the deprecated unittest methods to show them # no more than once per module, because they can be fairly # noisy. The -Wd and -Wa flags can be used to bypass this # only when self.warnings is None. if self.warnings in ['default', 'always']: warnings.filterwarnings( 'module', category=DeprecationWarning, message='Please use assert\w+ instead.') startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time() timeTaken = stopTime - startTime result.printErrors() run = result.testsRun details = { 'success': result.wasSuccessful(), 'failures': len(result.failures) + len(result.unexpectedSuccesses), 'errors': len(result.errors), 'skipped': len(result.skipped), 'time': round(timeTaken, 3), 'sum': run, } details['successes'] = run - (details['failures'] + details['errors']) result.printSummary(details) return result
def run(self, test): "Run the given test case or test suite." result = self._makeResult() result.failfast = self.failfast result.buffer = self.buffer startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() else: result.printErrors() stopTime = time.time() timeTaken = stopTime - startTime if hasattr(result, 'separator2'): self.stream.writeln(result.separator2) run = result.testsRun self.stream.writeln("Ran %d test%s in %.3fs" % (run, run != 1 and "s" or "", timeTaken)) self.stream.writeln() expectedFails = unexpectedSuccesses = skipped = 0 try: results = list( map(len, (result.expectedFailures, result.unexpectedSuccesses, result.skipped))) expectedFails, unexpectedSuccesses, skipped = results except AttributeError: pass infos = [] if not result.wasSuccessful(): self.stream.write(SET_FAIL_OUTPUT + " FAILED " + RESET_OUTPUT) failed, errored = list(map(len, (result.failures, result.errors))) if failed: infos.append("%sfailures=%d%s" % (SET_FAILURE_TEXT, failed, RESET_OUTPUT)) if errored: infos.append("%serrors=%d%s" % (SET_ERROR_TEXT, errored, RESET_OUTPUT)) else: self.stream.write(SET_OK_OUTPUT + " OK " + RESET_OUTPUT) if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: self.stream.writeln(" (%s)" % (", ".join(infos), )) else: self.stream.write("\n") if result.slow_tests: self.stream.writeln("Slow tests: ") for test in result.slow_tests: self.stream.writeln("{0} : {1}".format( test['name'], result.format_time(test['elapsed']))) result.closeLogFiles() return result
def run(self, test): "Run the given test case or test suite." # convert test classes to Tango Test Suite compliant def convertToTango(test): try: iter(test) except TypeError: test.__class__.__bases__ = (TangoTestCase, ) else: test.__class__ = TangoTestSuite for t in test: convertToTango(t) convertToTango(test) result = self._makeResult() registerResult(result) result.failfast = self.failfast result.buffer = self.buffer startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() stopTime = time.time() timeTaken = stopTime - startTime result.printErrors() if hasattr(result, 'separator2'): self.stream.writeln(result.separator2) run = result.testsRun self.stream.writeln("Ran %d test%s in %.3fs" % (run, run != 1 and "s" or "", timeTaken)) self.stream.writeln() expectedFails = unexpectedSuccesses = skipped = 0 try: results = map(len, (result.expectedFailures, result.unexpectedSuccesses, result.skipped)) except AttributeError: pass else: expectedFails, unexpectedSuccesses, skipped = results infos = [] if not result.wasSuccessful(): self.stream.write("FAILED") failed, errored = map(len, (result.failures, result.errors)) if failed: infos.append("failures=%d" % failed) if errored: infos.append("errors=%d" % errored) else: self.stream.write("OK") if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: self.stream.writeln(" (%s)" % (", ".join(infos), )) else: self.stream.write("\n") return result
def run(self, test): "Run the given test case or test suite." result = self._makeResult() result.failfast = self.failfast result.buffer = self.buffer startTime = time.time() startTestRun = getattr(result, 'startTestRun', None) if startTestRun is not None: startTestRun() try: test(result) finally: stopTestRun = getattr(result, 'stopTestRun', None) if stopTestRun is not None: stopTestRun() else: result.printErrors() stopTime = time.time() timeTaken = stopTime - startTime if hasattr(result, 'separator2'): self.stream.writeln(result.separator2) run = result.testsRun self.stream.writeln("Ran %d test%s in %.3fs" % (run, run != 1 and "s" or "", timeTaken)) self.stream.writeln() expectedFails = unexpectedSuccesses = skipped = 0 try: results = list( map( len, ( result.expectedFailures, result.unexpectedSuccesses, result.skipped ) ) ) expectedFails, unexpectedSuccesses, skipped = results except AttributeError: pass infos = [] if not result.wasSuccessful(): self.stream.write(SET_FAIL_OUTPUT + " FAILED " + RESET_OUTPUT) failed, errored = list(map(len, (result.failures, result.errors))) if failed: infos.append("%sfailures=%d%s" % (SET_FAILURE_TEXT, failed, RESET_OUTPUT)) if errored: infos.append("%serrors=%d%s" % (SET_ERROR_TEXT, errored, RESET_OUTPUT)) else: self.stream.write(SET_OK_OUTPUT + " OK " + RESET_OUTPUT) if skipped: infos.append("skipped=%d" % skipped) if expectedFails: infos.append("expected failures=%d" % expectedFails) if unexpectedSuccesses: infos.append("unexpected successes=%d" % unexpectedSuccesses) if infos: self.stream.writeln(" (%s)" % (", ".join(infos),)) else: self.stream.write("\n") if result.slow_tests: self.stream.writeln("Slow tests: ") for test in result.slow_tests: self.stream.writeln( "{0} : {1}".format(test['name'], result.format_time(test['elapsed'])) ) result.closeLogFiles() return result