代码之家  ›  专栏  ›  技术社区  ›  Eric Palakovich Carr

在manage.py测试期间禁用日志记录?

  •  7
  • Eric Palakovich Carr  · 技术社区  · 15 年前

    我使用标准的python日志模块。当我呼唤 python manage.py test 我想在运行所有测试之前禁用日志记录。是否有信号或其他类型的钩子可以用来调用logging.disable?或者有其他方法可以在 python manage.py测试 跑了吗?

    7 回复  |  直到 8 年前
        1
  •  2
  •   Alex Martelli    15 年前

    我只知道编辑 manage.py 本身…当然不是很优雅,但至少它能让你到达你需要的地方。

        2
  •  12
  •   Rmatt    12 年前

    实际上,有一种更好的方法可以做到这一点, django-nose 有一个Kwarg:

    只是运行:

    ./bin/manage.py test --logging-clear-handlers
    
        3
  •  9
  •   Dick    15 年前

    作为一种简单的替代方法,您可以在如下设置文件中运行测试时禁用日志记录:

    if 'test' in sys.argv:
        logger.removeHandler(handler)
        logger.setLevel(logging.ERROR)
    
        4
  •  6
  •   Scott A    8 年前

    我用过最简单的东西:

    import logging
    
    class MyTestClass(TestCase):
        def setUp(self):
            logging.disable(logging.CRITICAL)
    

    这不需要编辑、修补、额外安装等。所有日志记录都已完全关闭。

        5
  •  4
  •   ramusus    14 年前

    我更喜欢使用单独的设置运行测试,在这里我可以删除不必要的应用程序、中间件和测试期间不需要的其他东西。我也可以通过以下方式禁用日志输出:

    from settings import *
    import logging
    
    # direct all logging output to nowhere
    class NullHandler(logging.Handler):
        def emit(self, record):
            pass
    logging.getLogger().addHandler(NullHandler())
    
        6
  •  1
  •   Matthew Schinckel    15 年前

    我修补 test_extensions 也要这样做。

        7
  •  0
  •   Aaron Lelevier    9 年前

    如果您正在使用 django-nose ,然后您可以将以下代码段添加到 settings.py 运行时要禁用日志记录输出的文件 ./manage.py test

    NOSE_ARGS = [
        '--nologcapture'
    ]