27
27
DEFAULT_LOG_DATE_FORMAT = "%H:%M:%S"
28
28
_ANSI_ESCAPE_SEQ = re .compile (r"\x1b\[[\d;]+m" )
29
29
catch_log_handler_key = StoreKey ["LogCaptureHandler" ]()
30
- catch_log_handlers_key = StoreKey [Dict [str , "LogCaptureHandler" ]]()
30
+ catch_log_records_key = StoreKey [Dict [str , List [ logging . LogRecord ] ]]()
31
31
32
32
33
33
def _remove_ansi_escape_sequences (text ):
@@ -351,11 +351,7 @@ def get_records(self, when: str) -> List[logging.LogRecord]:
351
351
352
352
.. versionadded:: 3.4
353
353
"""
354
- handler = self ._item ._store [catch_log_handlers_key ].get (when )
355
- if handler :
356
- return handler .records
357
- else :
358
- return []
354
+ return self ._item ._store [catch_log_records_key ].get (when , [])
359
355
360
356
@property
361
357
def text (self ):
@@ -497,6 +493,8 @@ def __init__(self, config: Config) -> None:
497
493
get_option_ini (config , "log_auto_indent" ),
498
494
)
499
495
self .log_level = get_log_level_for_setting (config , "log_level" )
496
+ self .log_handler = LogCaptureHandler ()
497
+ self .log_handler .setFormatter (self .formatter )
500
498
501
499
# File logging.
502
500
self .log_file_level = get_log_level_for_setting (config , "log_file_level" )
@@ -639,10 +637,9 @@ def pytest_runtest_logreport(self):
639
637
640
638
def _runtest_for (self , item : nodes .Item , when : str ) -> Generator [None , None , None ]:
641
639
"""Implements the internals of pytest_runtest_xxx() hook."""
642
- log_handler = LogCaptureHandler ()
643
- log_handler .setFormatter (self .formatter )
644
- with catching_logs (log_handler , level = self .log_level ):
645
- item ._store [catch_log_handlers_key ][when ] = log_handler
640
+ with catching_logs (self .log_handler , level = self .log_level ) as log_handler :
641
+ log_handler .reset ()
642
+ item ._store [catch_log_records_key ][when ] = log_handler .records
646
643
item ._store [catch_log_handler_key ] = log_handler
647
644
648
645
yield
@@ -654,8 +651,7 @@ def _runtest_for(self, item: nodes.Item, when: str) -> Generator[None, None, Non
654
651
def pytest_runtest_setup (self , item ):
655
652
self .log_cli_handler .set_when ("setup" )
656
653
657
- empty = {} # type: Dict[str, LogCaptureHandler]
658
- item ._store [catch_log_handlers_key ] = empty
654
+ item ._store [catch_log_records_key ] = {}
659
655
yield from self ._runtest_for (item , "setup" )
660
656
661
657
@pytest .hookimpl (hookwrapper = True )
@@ -669,7 +665,7 @@ def pytest_runtest_teardown(self, item):
669
665
self .log_cli_handler .set_when ("teardown" )
670
666
671
667
yield from self ._runtest_for (item , "teardown" )
672
- del item ._store [catch_log_handlers_key ]
668
+ del item ._store [catch_log_records_key ]
673
669
del item ._store [catch_log_handler_key ]
674
670
675
671
@pytest .hookimpl
0 commit comments