nosetests: --nologcapture 仍然捕获 INFO 消息

nosetests: --nologcapture still captures INFO messages

用代码

import unittest
import logging

class LoggingTest(unittest.TestCase):

    def test_that_logs(self):
        logging.warning("Hello")
        logging.info("World")
        for a in xrange(100000000000000000):
            pass

我得到了这个意外的输出:

$ nosetests --version
nosetests version 1.3.7
$ nosetests log_from_nosetest.py --nocapture --nologcapture
WARNING:root:Hello
^C
----------------------------------------------------------------------
Ran 1 test in 105.376s

OK

可见。打印了 WARNING 日志级别消息,但不打印 INFO 级别的消息。

我试过使用 --logging-level setting 但没有成功。

好像少了一个功能。如果设置了 --nologcapture,nose 会简单地忽略所有日志记录设置,例如--logging-level 根本不使用。您可以使用

来补救

logging.basicConfig(level=logging.INFO)

在您的代码中 - 不确定这是否是您想要的,因为这种设置根本不应该在库代码中。不过在测试设置中会很好。

这是因为默认的日志级别是警告。用

设置
logging.getLogger('').setLevel(logging.INFO)