我有这个我要测试的代码:
log = logging.getLogger(__name__)
class A(object):
    def __init__(self):
        log.debug('Init')
但我无法弄清楚如何断言使用'Init'调用log.debug
我尝试修补记录器,但检查它我只发现了一个getLogger模拟.
我确信它很简单,但我无法想象它!
在此先感谢您的帮助!
以下 doctest 失败:
import logging
logging.basicConfig(level=logging.DEBUG,format='%(message)s')
def say_hello():
  '''
  >>> say_hello()
  Hello!
  '''
  logging.info('Hello!')
if __name__ == '__main__':
    import doctest
    doctest.testmod()
这些页面
似乎暗示logging.StreamHandler(sys.stdout),logger.addHandler(handler)但我的尝试在这方面失败了。(如果不是很明显,我是 python 的新手。)
请帮我修复上面的代码,以便测试通过。
2017 年 6 月 4 日更新:回答00prometheus的评论:当我问这个问题时,接受的使用 doctest 和登录 python 程序的答案似乎不必要地复杂。确实如此,因为这里接受的答案给出了一个更简单的解决方案。在我非常有偏见的意见中,我的问题也比我在原始帖子中已经链接的问题更清楚。
我正在尝试捕获在python单元测试过程中创建的日志,并在此处看到代码:https : //stackoverflow.com/a/1049375/576333。
但是,我无法使该代码正常工作,并且会自由地承认我对python的日志记录模块的理解并不理想。
本质上,我在该帖子中添加了模拟处理程序,如下所示:my_logger.addHandler(MockLoggingHandler)
当代码调用时,例如,my_logger.info(some_message)我得到AttributeError:类MockLoggingHandler没有属性'level'
我不确定从哪里开始找出MockLoggingHandler班上缺少的东西。顺便说一句,我正在使用Python 2.6.8。