即使测试通过,也要让前端测试运行器显示日志记录



我使用nosetests test.py运行单元测试:

import unittest
import logging

class Test(unittest.TestCase):
    def test_pass(self):
        logging.getLogger('do_not_want').info('HIDE THIS')
        logging.getLogger('test').info('TEST PASS')
        self.assertEqual(True, True)
    def test_fail(self):
        logging.getLogger('do_not_want').info('HIDE THIS')
        logging.getLogger('test').info('TEST FAIL')
        self.assertEqual(True, False)

当测试失败时,它打印出所有日志信息。我可以使用--logging-filter只过滤掉一些记录器:

nosetests test.py --verbosity=2 --logging-filter=test
test_fail (test.Test) ... FAIL
test_pass (test.Test) ... ok
======================================================================
FAIL: test_fail (test.Test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../test.py", line 14, in test_fail
    self.assertEqual(True, False)
AssertionError: True != False
-------------------- >> begin captured logging << --------------------
test: INFO: TEST FAIL
--------------------- >> end captured logging << ---------------------
----------------------------------------------------------------------
Ran 2 tests in 0.001s
FAILED (failures=1)

但是,当测试通过时,它不显示任何内容。

当测试通过时,我希望看到一个特定记录器的输出。我发现我可以使用-s来显示所有标准输出/标准错误文本,这并不完全是我需要的-它打印一切。我试着玩不同的设置,如--nologcapture, --nocapture,或--logging-filter,但我不能得到想要的效果。

nosetests --help一点也不明显,但答案是--debug标志。此标志接受您希望从中接收消息的记录器的名称作为参数。

这是OP代码的稍微修改版本:

# test.py
import unittest
import logging
class Test(unittest.TestCase):
    def test_pass(self):
        logging.getLogger('hide.this').info('HIDE THIS')
        logging.getLogger('show.this').info('TEST PASS')
        self.assertEqual(True, True)
    def test_fail(self):
        logging.getLogger('hide.this').info('HIDE THIS')
        logging.getLogger('show.this').info('TEST FAIL')
        self.assertEqual(True, False)

在本例中,nosetests test.py --debug=show.this应该可以达到这个目的。

我不确定这是否是你想要的。

在我的例子中,我使用:

nosetest -v -s

-s,——nocapture
不捕获标准输出(任何标准输出输出将立即打印)[NOSE_NOCAPTURE]

HTH

最新更新