@@ -849,7 +849,7 @@ def _assertNotWarns(self, expected_warning, *args, **kwargs):
849849 context = _AssertNotWarnsContext (expected_warning , self )
850850 return context .handle ('_assertNotWarns' , args , kwargs )
851851
852- def assertLogs (self , logger = None , level = None , formatter = None ):
852+ def assertLogs (self , logger = None , level = None , formatter = None , keep_handlers = False ):
853853 """Fail unless a log message of level *level* or higher is emitted
854854 on *logger_name* or its children. If omitted, *level* defaults to
855855 INFO and *logger* defaults to the root logger.
@@ -863,6 +863,11 @@ def assertLogs(self, logger=None, level=None, formatter=None):
863863
864864 Optionally supply `formatter` to control how messages are formatted.
865865
866+ Optionally supply `keep_handlers` to control whether to preserve existing handlers.
867+ Note that the logger's level will still be temporarily set to the requested level,
868+ which may cause existing handlers to process more messages than usual
869+ during the context manager.
870+
866871 Example::
867872
868873 with self.assertLogs('foo', level='INFO') as cm:
@@ -873,7 +878,7 @@ def assertLogs(self, logger=None, level=None, formatter=None):
873878 """
874879 # Lazy import to avoid importing logging if it is not needed.
875880 from ._log import _AssertLogsContext
876- return _AssertLogsContext (self , logger , level , no_logs = False , formatter = formatter )
881+ return _AssertLogsContext (self , logger , level , no_logs = False , formatter = formatter , keep_handlers = keep_handlers )
877882
878883 def assertNoLogs (self , logger = None , level = None ):
879884 """ Fail unless no log messages of level *level* or higher are emitted
0 commit comments