assertLogs(logger=None, level=None)
A context manager to test that at least one message is logged on the logger or one of its children, with at least the given level.
If given, logger should be a logging.Logger
object or a str
giving the name of a logger. The default is the root logger, which will catch all messages.
If given, level should be either a numeric logging level or its string equivalent (for example either "ERROR"
or logging.ERROR
). The default is logging.INFO
.
The test passes if at least one message emitted inside the with
block matches the logger and level conditions, otherwise it fails.
The object returned by the context manager is a recording helper which keeps tracks of the matching log messages. It has two attributes:
-
records
-
A list of
logging.LogRecord
objects of the matching log messages.
-
output
-
A list of
str
objects with the formatted output of matching messages.
Example:
with self.assertLogs('foo', level='INFO') as cm: logging.getLogger('foo').info('first message') logging.getLogger('foo.bar').error('second message') self.assertEqual(cm.output, ['INFO:foo:first message', 'ERROR:foo.bar:second message'])
New in version 3.4.
Please login to continue.