def pytest_report_teststatus(self, report): """ Print report results to the console as they are run """ try: report_file, report_test = report.nodeid.split('::', 1) except ValueError: return if not 'test' in shakedown.state: shakedown.state['test'] = 1 echo('Running individual tests...', d='step-min') if not report_file in shakedown.tests['file']: shakedown.tests['file'][report_file] = 1 echo(report_file, d='item-maj') if not report.nodeid in shakedown.tests['test']: shakedown.tests['test'][report.nodeid] = {} if args['stdout_inline']: echo('') echo(report_test + ':', d='item-min') else: echo(report_test, d='item-min', n=False) if report.failed: shakedown.tests['test'][report.nodeid]['fail'] = True if report.when == 'teardown' and not 'tested' in shakedown.tests['test'][report.nodeid]: shakedown.output(report.nodeid, 'pass', None) # Suppress excess terminal output return report.outcome, None, None
def pytest_collectreport(self, report): """ Collect and validate individual test files """ if not 'collect' in shakedown.state: shakedown.state['collect'] = 1 echo('Collecting and validating test files...', d='step-min') if report.nodeid: echo(report.nodeid, d='item-maj', n=False) state = None if report.failed: state = 'fail' if report.passed: state = 'pass' if report.skipped: state = 'skip' if state: if report.longrepr: shakedown.output(report.nodeid, state, report.longrepr) else: shakedown.output(report.nodeid, state, None)
def pytest_report_teststatus(self, report): """ Print report results to the console as they are run """ try: report_file, report_test = report.nodeid.split('::', 1) except ValueError: return if not 'test' in shakedown.state: shakedown.state['test'] = 1 echo('Running individual tests...', d='step-min') if not report_file in shakedown.tests['file']: shakedown.tests['file'][report_file] = 1 echo(report_file, d='item-maj') if not report.nodeid in shakedown.tests['test']: shakedown.tests['test'][report.nodeid] = {} if args['stdout_inline']: echo('') echo(report_test + ':', d='item-min') else: echo(report_test, d='item-min', n=False) if report.failed: shakedown.tests['test'][report.nodeid]['fail'] = True if report.when == 'teardown' and not 'tested' in shakedown.tests[ 'test'][report.nodeid]: shakedown.output(report.nodeid, 'pass', None) # Suppress excess terminal output return report.outcome, None, None
def pytest_runtest_logreport(self, report): """ Log the [stdout, stderr] results of tests if desired """ state = None for secname, content in report.sections: if report.failed: state = 'fail' if report.passed: state = 'pass' if report.skipped: state = 'skip' if state and secname != 'Captured stdout call': module = report.nodeid.split('::', 1)[0] cap_type = secname.split(' ')[-1] if not 'setup' in shakedown.tests['test'][report.nodeid]: shakedown.tests['test'][report.nodeid]['setup'] = True shakedown.output(module + ' ' + cap_type, state, content, False) elif cap_type == 'teardown': shakedown.output(module + ' ' + cap_type, state, content, False) elif state and report.when == 'call': if 'tested' in shakedown.tests['test'][report.nodeid]: shakedown.output(report.nodeid, state, content, False) else: shakedown.tests['test'][report.nodeid]['tested'] = True shakedown.output(report.nodeid, state, content) # Capture execution crashes if hasattr(report.longrepr, 'reprcrash'): longreport = report.longrepr if 'tested' in shakedown.tests['test'][report.nodeid]: shakedown.output(report.nodeid, 'fail', 'error: ' + str(longreport.reprcrash), False) else: shakedown.tests['test'][report.nodeid]['tested'] = True shakedown.output(report.nodeid, 'fail', 'error: ' + str(longreport.reprcrash))