MCPcopy
hub / github.com/pytest-dev/pytest / __init__

Method __init__

src/_pytest/logging.py:659–724  ·  view source on GitHub ↗

Create a new plugin to capture log messages. The formatter can be safely shared across all handlers so create a single one for the entire test session here.

(self, config: Config)

Source from the content-addressed store, hash-verified

657 """Attaches to the logging module and captures log messages for each test."""
658
659 def __init__(self, config: Config) -> None:
660 """Create a new plugin to capture log messages.
661
662 The formatter can be safely shared across all handlers so
663 create a single one for the entire test session here.
664 """
665 self._config = config
666
667 # Report logging.
668 self.formatter = self._create_formatter(
669 get_option_ini(config, "log_format"),
670 get_option_ini(config, "log_date_format"),
671 get_option_ini(config, "log_auto_indent"),
672 )
673 self.log_level = get_log_level_for_setting(config, "log_level")
674 self.caplog_handler = LogCaptureHandler()
675 self.caplog_handler.setFormatter(self.formatter)
676 self.report_handler = LogCaptureHandler()
677 self.report_handler.setFormatter(self.formatter)
678
679 # File logging.
680 self.log_file_level = get_log_level_for_setting(
681 config, "log_file_level", "log_level"
682 )
683 log_file = get_option_ini(config, "log_file") or os.devnull
684 if log_file != os.devnull:
685 directory = os.path.dirname(os.path.abspath(log_file))
686 if not os.path.isdir(directory):
687 os.makedirs(directory)
688
689 self.log_file_mode = get_option_ini(config, "log_file_mode") or "w"
690 self.log_file_handler = _FileHandler(
691 log_file, mode=self.log_file_mode, encoding="UTF-8"
692 )
693 log_file_format = get_option_ini(config, "log_file_format", "log_format")
694 log_file_date_format = get_option_ini(
695 config, "log_file_date_format", "log_date_format"
696 )
697
698 log_file_formatter = DatetimeFormatter(
699 log_file_format, datefmt=log_file_date_format
700 )
701 self.log_file_handler.setFormatter(log_file_formatter)
702
703 # CLI/live logging.
704 self.log_cli_level = get_log_level_for_setting(
705 config, "log_cli_level", "log_level"
706 )
707 if self._log_cli_enabled():
708 terminal_reporter = config.pluginmanager.get_plugin("terminalreporter")
709 # Guaranteed by `_log_cli_enabled()`.
710 assert terminal_reporter is not None
711 capture_manager = config.pluginmanager.get_plugin("capturemanager")
712 # if capturemanager plugin is disabled, live logging still works.
713 self.log_cli_handler: (
714 _LiveLoggingStreamHandler | _LiveLoggingNullHandler
715 ) = _LiveLoggingStreamHandler(terminal_reporter, capture_manager)
716 else:

Callers

nothing calls this directly

Calls 12

_create_formatterMethod · 0.95
_log_cli_enabledMethod · 0.95
_disable_loggersMethod · 0.95
get_option_iniFunction · 0.85
LogCaptureHandlerClass · 0.85
_FileHandlerClass · 0.85
DatetimeFormatterClass · 0.85
dirnameMethod · 0.80
isdirMethod · 0.45

Tested by

no test coverage detected