阻止测试打印日志信息?

Ray*_*Ray 15 python django nosetests

如何防止nosetests在其测试的输出中散布日志输出?我只是将记录添加到我的Django代码中,如下所示:

import logging
logger = logging.getLogger(__name__)

def home_page(request, template):
    device = get_device_capabilities(request)
    device_type = get_device_type(device)
    logger.info("device_type = " + device_type)
    logger.info("screen_width = " + str(screen_width))
Run Code Online (Sandbox Code Playgroud)

当我运行这样的测试时:

nosetests --nocapture
Run Code Online (Sandbox Code Playgroud)

我明白了:

[04/15/2014 02:42:57 PM] INFO [apps.home.views:24] device_type = computer
[04/15/2014 02:42:57 PM] INFO [apps.home.views:25] screen_width = 800
....................................................................................................................................................................................................................................
----------------------------------------------------------------------
Ran 230 tests in 42.521s

OK
Run Code Online (Sandbox Code Playgroud)

我刚刚开始提高异常和记录信息,我当然不希望我的测试输出充斥着我的记录器语句的输出.我认为"--nocapture"标志应该阻止这一点.我已经浏览了所有的测试文档,并没有看到任何有用的东西.我错过了什么吗?有没有办法阻止nosetests在我的输出中包含我的记录器消息?

谢谢!

Ray*_*Ray 30

感谢那些为我的问题提供答案的人.我选择不实施amezhenin的解决方案,因为它与我运行测试的方式有太大不同,我不想改变.Oleksiy的解决方案摆脱了一些记录消息,但不是全部.我不太了解gardenunez所得到的但这是我的错.

经过更多的研究,我意识到我错误地指定了nosetest参数.正如我在最初的问题中指出的那样,它不是" - 无法捕捉",而是" - 无法捕捉".当我指定此参数时,我的所有日​​志消息都被隐藏了.

  • `--nologcapture` 不会_disable_ 日志插件,导致日志消息内联显示吗? (2认同)

Ole*_*siy 5

您可以始终使用nose --logging-clear-handlers来清除所有其他日志记录处理程序.