34
34
DEFAULT_LOG_FORMAT = "%(levelname)-8s %(name)s:%(filename)s:%(lineno)d %(message)s"
35
35
DEFAULT_LOG_DATE_FORMAT = "%H:%M:%S"
36
36
_ANSI_ESCAPE_SEQ = re .compile (r"\x1b\[[\d;]+m" )
37
- catch_log_handler_key = StoreKey ["LogCaptureHandler" ]()
38
- catch_log_records_key = StoreKey [Dict [str , List [logging .LogRecord ]]]()
37
+ caplog_handler_key = StoreKey ["LogCaptureHandler" ]()
38
+ caplog_records_key = StoreKey [Dict [str , List [logging .LogRecord ]]]()
39
39
40
40
41
41
def _remove_ansi_escape_sequences (text : str ) -> str :
@@ -362,7 +362,7 @@ def handler(self) -> LogCaptureHandler:
362
362
"""
363
363
:rtype: LogCaptureHandler
364
364
"""
365
- return self ._item ._store [catch_log_handler_key ]
365
+ return self ._item ._store [caplog_handler_key ]
366
366
367
367
def get_records (self , when : str ) -> List [logging .LogRecord ]:
368
368
"""
@@ -376,7 +376,7 @@ def get_records(self, when: str) -> List[logging.LogRecord]:
376
376
377
377
.. versionadded:: 3.4
378
378
"""
379
- return self ._item ._store [catch_log_records_key ].get (when , [])
379
+ return self ._item ._store [caplog_records_key ].get (when , [])
380
380
381
381
@property
382
382
def text (self ) -> str :
@@ -523,8 +523,10 @@ def __init__(self, config: Config) -> None:
523
523
get_option_ini (config , "log_auto_indent" ),
524
524
)
525
525
self .log_level = get_log_level_for_setting (config , "log_level" )
526
- self .log_handler = LogCaptureHandler ()
527
- self .log_handler .setFormatter (self .formatter )
526
+ self .caplog_handler = LogCaptureHandler ()
527
+ self .caplog_handler .setFormatter (self .formatter )
528
+ self .report_handler = LogCaptureHandler ()
529
+ self .report_handler .setFormatter (self .formatter )
528
530
529
531
# File logging.
530
532
self .log_file_level = get_log_level_for_setting (config , "log_file_level" )
@@ -665,22 +667,27 @@ def pytest_runtest_logreport(self) -> None:
665
667
666
668
def _runtest_for (self , item : nodes .Item , when : str ) -> Generator [None , None , None ]:
667
669
"""Implements the internals of pytest_runtest_xxx() hook."""
668
- with catching_logs (self .log_handler , level = self .log_level ) as log_handler :
669
- log_handler .reset ()
670
- item ._store [catch_log_records_key ][when ] = log_handler .records
671
- item ._store [catch_log_handler_key ] = log_handler
670
+ with catching_logs (
671
+ self .caplog_handler , level = self .log_level ,
672
+ ) as caplog_handler , catching_logs (
673
+ self .report_handler , level = self .log_level ,
674
+ ) as report_handler :
675
+ caplog_handler .reset ()
676
+ report_handler .reset ()
677
+ item ._store [caplog_records_key ][when ] = caplog_handler .records
678
+ item ._store [caplog_handler_key ] = caplog_handler
672
679
673
680
yield
674
681
675
- log = log_handler .stream .getvalue ().strip ()
682
+ log = report_handler .stream .getvalue ().strip ()
676
683
item .add_report_section (when , "log" , log )
677
684
678
685
@pytest .hookimpl (hookwrapper = True )
679
686
def pytest_runtest_setup (self , item : nodes .Item ) -> Generator [None , None , None ]:
680
687
self .log_cli_handler .set_when ("setup" )
681
688
682
689
empty = {} # type: Dict[str, List[logging.LogRecord]]
683
- item ._store [catch_log_records_key ] = empty
690
+ item ._store [caplog_records_key ] = empty
684
691
yield from self ._runtest_for (item , "setup" )
685
692
686
693
@pytest .hookimpl (hookwrapper = True )
@@ -694,8 +701,8 @@ def pytest_runtest_teardown(self, item: nodes.Item) -> Generator[None, None, Non
694
701
self .log_cli_handler .set_when ("teardown" )
695
702
696
703
yield from self ._runtest_for (item , "teardown" )
697
- del item ._store [catch_log_records_key ]
698
- del item ._store [catch_log_handler_key ]
704
+ del item ._store [caplog_records_key ]
705
+ del item ._store [caplog_handler_key ]
699
706
700
707
@pytest .hookimpl
701
708
def pytest_runtest_logfinish (self ) -> None :
0 commit comments