New submission from Troy Daniels <[email protected]>:
The following test code unexpectedly passes.
import logging
import unittest
LOG_FORMAT = '%(levelname)-10s %(asctime)s: %(message)s'
def set_up_logger(app_name, level=logging.INFO, file="test.log"):
formatter = logging.Formatter(LOG_FORMAT)
log = logging.getLogger(app_name)
# The next line lets the test pass
log.setLevel(level)
return log
logger = set_up_logger(__name__)
class TestLogging(unittest.TestCase):
def test_logging(self):
with self.assertLogs(level=logging.WARNING):
logger.info('foo')
Based on discussion at
https://stackoverflow.com/questions/64141681/any-level-of-logging-lets-assertlogs-pass,
it appears that I need to pass in the logger which is going to be doing the
logging.
Doing so would make the test over-specific and fragile. The requirement is
that a warning be logged, not that a specific logger issue the warning.
This was verified with Python 3.8.5 on a Mac, but probably exists in most/all
other versions.
----------
components: Tests
messages: 377719
nosy: udalrich.schermer
priority: normal
severity: normal
status: open
title: Any logging causes assertLogs to pass
type: behavior
versions: Python 3.8
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue41898>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com