Override python protocols for testing effectiveness

In many cases, unit tests are significantly slowed down with the python package logging. Assuming logging is not essential for the test, how would you cleanly redefine loggingper-test so that the log commands would be effectively skipped.

Suppose the use of multiple registrars, such as:

logger1 = logging.getLogger('logger1')
logger2 = logging.getLogger('logger2')
+5
source share
1 answer

Option 1:

Recording can be disabled by calling

logging.disable(logging.CRITICAL)

and turned on again with

logging.disable(logging.NOTSET)

, logger.info, - , Python isEnabledFor. , .

2:

:

class MockLogger(object):
    def debug(msg, *args, **kwargs): pass
    def info(msg, *args, **kwargs): pass
    def warn(msg, *args, **kwargs): pass
    def error(msg, *args, **kwargs): pass
    def critical(msg, *args, **kwargs): pass

class Test(unittest.TestCase):
    def test_func(self):
        _logger1=testmodule.logger1
        _logger2=testmodule.logger2
        testmodule.logger1=MockLogger()
        testmodule.logger2=MockLogger()
        # perform test
        testmodule.logger1=_logger1
        testmodule.logger2=_logger2

, , (noop). , , - .

+12

All Articles