def test_wrapped_logger_has_original_logger(self): import logging logger = logging.getLogger() logger_attr = "logger" wrapped_logger = pkg_logging.LoggerWrapper(logger) self.assertHasAttr(wrapped_logger, logger_attr) self.assertIs(getattr(wrapped_logger, logger_attr), logger)
def test_wrapped_logger_shares_interface(self): import logging logger = logging.getLogger() attrs = ("debug info warning error critical exception " "name level").split() wrapped_logger = pkg_logging.LoggerWrapper(logger) for attr in attrs: with self.subTest(expected_attr=attr): self.assertHasAttr(logger, attr, msg="Precondition!") self.assertHasAttr(wrapped_logger, attr)
def test_wrapped_logger_autologs_nonExceptions_with_specified_level(self): expected_level = "DEBUG" import logging logger = logging.getLogger(self.random_name) wrapped_logger = pkg_logging.LoggerWrapper(logger) self.assertNotEqual(wrapped_logger.level, self.coded_levels.get(expected_level), msg="Precondition") with self.assertLogs(logger=wrapped_logger.logger, level=expected_level): wrapped_logger.autolog(self.message, level=expected_level)
def test_wrapped_logger_logs(self): import logging logger = logging.getLogger() levels = "DEBUG INFO WARNING ERROR CRITICAL".split() wrapped_logger = pkg_logging.LoggerWrapper(logger) # Preconditon: agnostic of logger setting, essentially tests the # handlers. pkg_logging.setLevel("DEBUG") for level in levels: with self.subTest(level=level): self.wrapped_logger_logs(wrapped_logger, level)
def test_wrapped_logger_autologs_exceptions_specially(self): import logging logger = logging.getLogger(self.random_name) logger.setLevel("WARNING") msg = self.message msg_warn = msg + str(hash("WARNING")) msg_err = msg + str(hash("ERROR")) msg_crit = msg + str(hash("CRITICAL")) errors = { "ERROR": exceptions.RecomposeError(msg_warn), "WARNING": exceptions.RecomposeWarning(msg_err), "CRITICAL": Exception(msg_crit) } wrapped_logger = pkg_logging.LoggerWrapper(logger) for level, error in errors.items(): with self.subTest(log_exc_expecting=error): with self.assertLogs() as captured: wrapped_logger.autolog(error) expected = [level, str(error)] output = captured.output.pop() self.assertSubstringsInString(expected, output)