我一直在尝试使用unittest --buffer标志来抑制成功测试的日志并显示失败测试的日志。但无论如何它似乎都会显示日志输出。这是日志记录模块的怪癖吗?如何仅在失败的测试中获取日志输出?记录器上是否需要特殊配置?我发现的其他问题和答案采用了暴力方法来禁用测试期间的所有日志记录。
import logging
import unittest
import sys
logger = logging.getLogger('abc')
logging.basicConfig(
format = '%(asctime)s %(module)s %(levelname)s: %(message)s',
level = logging.INFO,
stream = sys.stdout)
class TestABC(unittest.TestCase):
def test_abc_pass(self):
logger.info('log abc in pass')
print('print abc in pass')
self.assertTrue(True)
def test_abc_fail(self):
logger.info('log abc in fail')
print('print abc in fail')
self.assertTrue(False)
Run Code Online (Sandbox Code Playgroud)
$ python -m unittest --buffer
2021-09-15 17:38:48,462 test INFO: log abc in fail
F
Stdout:
print abc in fail
2021-09-15 17:38:48,463 test INFO: log abc in pass …Run Code Online (Sandbox Code Playgroud)