def _fill_case(self, report, call, pyteststatus, status): """ Finalizes with important data :param report: py.test's `TestReport` :param call: py.test's `CallInfo` :param pyteststatus: the failed/xfailed/xpassed thing :param status: a :py:class:`allure.constants.Status` entry """ [ self.attach(name, contents, AttachmentType.TEXT) for (name, contents) in dict(report.sections).items() ] self.test.stop = now() self.test.status = status if status in FAILED_STATUSES: self.test.failure = Failure( message=get_exception_message(call.excinfo, pyteststatus, report), trace=report.longrepr or hasattr(report, 'wasxfail') and report.wasxfail) elif status in SKIPPED_STATUSES: skip_message = type( report.longrepr ) == tuple and report.longrepr[2] or report.wasxfail trim_msg_len = 89 short_message = skip_message.split('\n')[0][:trim_msg_len] # FIXME: see pytest.runner.pytest_runtest_makereport self.test.failure = Failure( message=(short_message + '...' * (len(skip_message) > trim_msg_len)), trace=status == Status.PENDING and report.longrepr or short_message != skip_message and skip_message or '')
def _fill_case(self, report, call, pyteststatus, status): """ Finalizes with important data :param report: py.test's `TestReport` :param call: py.test's `CallInfo` :param pyteststatus: the failed/xfailed/xpassed thing :param status: a :py:class:`allure.constants.Status` entry """ [self.attach(name, contents, AttachmentType.TEXT) for (name, contents) in dict(report.sections).items()] self.test.stop = now() self.test.status = status if status in FAILED_STATUSES: self.test.failure = Failure( message=get_exception_message(call.excinfo, pyteststatus, report), trace=report.longrepr or hasattr(report, "wasxfail") and report.wasxfail, ) elif status in SKIPPED_STATUSES: skip_message = type(report.longrepr) == tuple and report.longrepr[2] or report.wasxfail trim_msg_len = 89 short_message = skip_message.split("\n")[0][:trim_msg_len] # FIXME: see pytest.runner.pytest_runtest_makereport self.test.failure = Failure( message=(short_message + "..." * (len(skip_message) > trim_msg_len)), trace=status == Status.PENDING and report.longrepr or short_message != skip_message and skip_message or "", )
def _stop_case(self, report, status=None): """ Finalizes with important data the test at the top of ``self.stack`` and returns it """ [ self.attach(name, contents, AttachmentType.TEXT) for (name, contents) in dict(report.sections).items() ] if status in FAILED_STATUSES: self.impl.stop_case(status, message=get_exception_message(report), trace=report.longrepr or report.wasxfail) elif status in SKIPPED_STATUSES: skip_message = type( report.longrepr ) == tuple and report.longrepr[2] or report.wasxfail trim_msg_len = 89 short_message = skip_message.split('\n')[0][:trim_msg_len] # FIXME: see pytest.runner.pytest_runtest_makereport self.impl.stop_case( status, message=(short_message + '...' * (len(skip_message) > trim_msg_len)), trace=status == Status.PENDING and report.longrepr or short_message != skip_message and skip_message or None) else: self.impl.stop_case(status)
def pytest_collectreport(self, report): if not report.passed: if report.failed: status = Status.BROKEN else: status = Status.SKIPPED self.fails.append(CollectFail(name=mangle_testnames(report.nodeid.split("::"))[-1], status=status, message=get_exception_message(report), trace=report.longrepr))
def pytest_collectreport(self, report): if not report.passed: if report.failed: status = Status.BROKEN else: status = Status.CANCELED self.fails.append(CollectFail(name=mangle_testnames(report.nodeid.split("::"))[-1], status=status, message=get_exception_message(None, None, report), trace=report.longrepr))
def _stop_case(self, report, status=None): """ Finalizes with important data the test at the top of ``self.stack`` and returns it """ [self.attach(name, contents, AttachmentType.TEXT) for (name, contents) in dict(report.sections).items()] if status in FAILED_STATUSES: self.impl.stop_case(status, message=get_exception_message(report), trace=report.longrepr or report.wasxfail) elif status == Status.SKIPPED: # FIXME: see pytest.runner.pytest_runtest_makereport self.impl.stop_case(status, message='skipped', trace=type(report.longrepr) == tuple and report.longrepr[2] or report.wasxfail) else: self.impl.stop_case(status)
def _stop_case(self, report, status=None): """ Finalizes with important data the test at the top of ``self.stack`` and returns it """ [self.attach(name, contents, AttachmentType.TEXT) for (name, contents) in dict(report.sections).items()] if status in FAILED_STATUSES: self.impl.stop_case(status, message=get_exception_message(report), trace=report.longrepr or report.wasxfail) elif status in SKIPPED_STATUSES: skip_message = type(report.longrepr) == tuple and report.longrepr[2] or report.wasxfail trim_msg_len = 89 short_message = skip_message.split('\n')[0][:trim_msg_len] # FIXME: see pytest.runner.pytest_runtest_makereport self.impl.stop_case(status, message=(short_message + '...' * (len(skip_message) > trim_msg_len)), trace=status == Status.PENDING and report.longrepr or short_message != skip_message and skip_message or None) else: self.impl.stop_case(status)
def _fill_case(self, report, call, pyteststatus, status): """ Finalizes with important data :param report: py.test's `TestReport` :param call: py.test's `CallInfo` :param pyteststatus: the failed/xfailed/xpassed thing :param status: a :py:class:`allure.constants.Status` entry """ # To enable color coding in stdout log we have to write allure attachments as html. for (name, contents) in dict(report.sections).items(): if "stdout" in name: attachment_type = AttachmentType.HTML formatted_contents = self._convert_to_html(contents) else: attachment_type = AttachmentType.TEXT formatted_contents = contents self.attach(name, formatted_contents, attachment_type) self.test.stop = now() self.test.status = status if status in FAILED_STATUSES: self.test.failure = Failure(message=get_exception_message( call.excinfo, pyteststatus, report), trace=report.longrepr) elif status in SKIPPED_STATUSES: skip_message = isinstance( report.longrepr, tuple) and report.longrepr[2] or report.wasxfail trim_msg_len = 89 short_message = skip_message.split('\n')[0][:trim_msg_len] # FIXME: see pytest.runner.pytest_runtest_makereport self.test.failure = Failure( message=(short_message + '...' * (len(skip_message) > trim_msg_len)), trace=status == Status.PENDING and report.longrepr or short_message != skip_message and skip_message or '')