MCPcopy Create free account
hub / github.com/pytest-dev/pytest / LogXML

Class LogXML

src/_pytest/junitxml.py:461–696  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

459
460
461class LogXML:
462 def __init__(
463 self,
464 logfile,
465 prefix: Optional[str],
466 suite_name: str = "pytest",
467 logging: str = "no",
468 report_duration: str = "total",
469 family="xunit1",
470 log_passing_tests: bool = True,
471 ) -> None:
472 logfile = os.path.expanduser(os.path.expandvars(logfile))
473 self.logfile = os.path.normpath(os.path.abspath(logfile))
474 self.prefix = prefix
475 self.suite_name = suite_name
476 self.logging = logging
477 self.log_passing_tests = log_passing_tests
478 self.report_duration = report_duration
479 self.family = family
480 self.stats: Dict[str, int] = dict.fromkeys(
481 ["error", "passed", "failure", "skipped"], 0
482 )
483 self.node_reporters: Dict[
484 Tuple[Union[str, TestReport], object], _NodeReporter
485 ] = {}
486 self.node_reporters_ordered: List[_NodeReporter] = []
487 self.global_properties: List[Tuple[str, str]] = []
488
489 # List of reports that failed on call but teardown is pending.
490 self.open_reports: List[TestReport] = []
491 self.cnt_double_fail_tests = 0
492
493 # Replaces convenience family with real family.
494 if self.family == "legacy":
495 self.family = "xunit1"
496
497 def finalize(self, report: TestReport) -> None:
498 nodeid = getattr(report, "nodeid", report)
499 # Local hack to handle xdist report order.
500 workernode = getattr(report, "node", None)
501 reporter = self.node_reporters.pop((nodeid, workernode))
502 if reporter is not None:
503 reporter.finalize()
504
505 def node_reporter(self, report: Union[TestReport, str]) -> _NodeReporter:
506 nodeid: Union[str, TestReport] = getattr(report, "nodeid", report)
507 # Local hack to handle xdist report order.
508 workernode = getattr(report, "node", None)
509
510 key = nodeid, workernode
511
512 if key in self.node_reporters:
513 # TODO: breaks for --dist=each
514 return self.node_reporters[key]
515
516 reporter = _NodeReporter(nodeid, self)
517
518 self.node_reporters[key] = reporter

Callers 5

test_unicode_issue368Function · 0.90
test_global_propertiesFunction · 0.90
test_url_propertyFunction · 0.90
pytest_configureFunction · 0.85

Calls

no outgoing calls

Tested by 4

test_unicode_issue368Function · 0.72
test_global_propertiesFunction · 0.72
test_url_propertyFunction · 0.72