您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

PyDev单元测试:如何捕获记录到日志中的文本。“捕获的输出”中的记录器

PyDev单元测试:如何捕获记录到日志中的文本。“捕获的输出”中的记录器

问题是unittest跑步者在测试开始之前替换了sys.stdout/sys.stderr,并且StreamHandler仍在写入原始内容sys.stdout

如果将“当前”分配给sys.stdout处理程序,则它应该可以工作(请参见下面的代码)。

import sys
import unittest
import logging

logger = logging.getLogger()
logger.level = logging.DEBUG
stream_handler = logging.StreamHandler(sys.stdout)
logger.addHandler(stream_handler)

class TestCase(unittest.TestCase):
    def testSimpleMsg(self):
        stream_handler.stream = sys.stdout
        print("AA")
        logging.getLogger().info("BB")

虽然,更好的方法是在测试期间添加/删除处理程序:

import sys
import unittest
import logging

logger = logging.getLogger()
logger.level = logging.DEBUG

class TestCase(unittest.TestCase):
    def testSimpleMsg(self):
        stream_handler = logging.StreamHandler(sys.stdout)
        logger.addHandler(stream_handler)
        try:
            print("AA")
            logging.getLogger().info("BB")
        finally:
            logger.removeHandler(stream_handler)
其他 2022/1/1 18:32:37 有318人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶