Add summary for xfails with -rxX option

This commit is contained in:
Fabian Sturm 2023-11-01 15:41:46 +01:00
parent 8fb7e8b31e
commit 1ce234dc78
1 changed files with 35 additions and 0 deletions

View File

@ -878,8 +878,10 @@ class TerminalReporter:
def pytest_terminal_summary(self) -> Generator[None, None, None]: def pytest_terminal_summary(self) -> Generator[None, None, None]:
self.summary_errors() self.summary_errors()
self.summary_failures() self.summary_failures()
self.summary_xfailures()
self.summary_warnings() self.summary_warnings()
self.summary_passes() self.summary_passes()
self.summary_xpasses()
try: try:
return (yield) return (yield)
finally: finally:
@ -1022,6 +1024,20 @@ class TerminalReporter:
self._outrep_summary(rep) self._outrep_summary(rep)
self._handle_teardown_sections(rep.nodeid) self._handle_teardown_sections(rep.nodeid)
def summary_xpasses(self) -> None:
if self.config.option.tbstyle != "no":
if self.hasopt("X"):
reports: List[TestReport] = self.getreports("xpassed")
if not reports:
return
self.write_sep("=", "XPASSES")
for rep in reports:
if rep.sections:
msg = self._getfailureheadline(rep)
self.write_sep("_", msg, green=True, bold=True)
self._outrep_summary(rep)
self._handle_teardown_sections(rep.nodeid)
def _get_teardown_reports(self, nodeid: str) -> List[TestReport]: def _get_teardown_reports(self, nodeid: str) -> List[TestReport]:
reports = self.getreports("") reports = self.getreports("")
return [ return [
@ -1064,6 +1080,25 @@ class TerminalReporter:
self._outrep_summary(rep) self._outrep_summary(rep)
self._handle_teardown_sections(rep.nodeid) self._handle_teardown_sections(rep.nodeid)
def summary_xfailures(self) -> None:
if self.config.option.tbstyle != "no":
if self.hasopt("x"):
reports: List[BaseReport] = self.getreports("xfailed")
if not reports:
return
self.write_sep("=", "XFAILURES")
if self.config.option.tbstyle == "line":
for rep in reports:
line = self._getcrashline(rep)
self.write_line(line)
else:
for rep in reports:
msg = self._getfailureheadline(rep)
self.write_sep("_", msg, red=True, bold=True)
self._outrep_summary(rep)
self._handle_teardown_sections(rep.nodeid)
def summary_errors(self) -> None: def summary_errors(self) -> None:
if self.config.option.tbstyle != "no": if self.config.option.tbstyle != "no":
reports: List[BaseReport] = self.getreports("error") reports: List[BaseReport] = self.getreports("error")