小编Sat*_* A.的帖子

如何让 python unittest 仅在失败的测试中显示日志消息

问题

我一直在尝试使用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)

python python-unittest python-logging

5
推荐指数
1
解决办法
3551
查看次数

标签 统计

python ×1

python-logging ×1

python-unittest ×1