您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

覆盖python日志记录以提高测试效率

5b51 2022/1/14 8:20:41 python 字数 2740 阅读 462 来源 www.jb51.cc/python

在许多情况下,使用python的日志包显着减慢了单元测试.假设日志记录对测试不是必不可少的,那么如何干净地覆盖每次测试的日志记录,以便有效地跳过日志命令.假设使用多个记录器,例如:logger1 = logging.getLogger('logger1') logger2 = logging.getLogger('logger2') 最佳答案选项1:通过调用

概述

在许多情况下,使用python的日志包显着减慢了单元测试.假设日志记录对测试不是必不可少的,那么如何干净地覆盖每次测试的日志记录,以便有效地跳过日志命令.

假设使用多个记录器,例如:

logger1 = logging.getLogger('logger1')
logger2 = logging.getLogger('logger2')

通过调用记录可以是disabled

logging.disable(logging.CRITICAL)

并重新开始

logging.disable(logging.NOTSET)

但是,即使在禁用日志记录后,logger.info等日志语句仍会导致Python在到达isEnabledFor方法之前执行一些属性查找和函数调用.不过,这可能还不错.

选项2:

使用模拟:

class MockLogger(object):
    def debug(msg,*args,**kwargs): pass
    def info(msg,**kwargs): pass
    def warn(msg,**kwargs): pass
    def error(msg,**kwargs): pass
    def critical(msg,**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)函数调用所花费的时间所消耗的时间.如果这不令人满意,我认为剩下的唯一选择就是删除日志语句本身.

总结

以上是编程之家为你收集整理的覆盖python日志记录以提高测试效率全部内容,希望文章能够帮你解决覆盖python日志记录以提高测试效率所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶