相关疑难解决方法(0)

我如何修补/模拟logging.getlogger()

我有这个我要测试的代码:

log = logging.getLogger(__name__)


class A(object):
    def __init__(self):
        log.debug('Init')
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何断言使用'Init'调用log.debug

我尝试修补记录器,但检查它我只发现了一个getLogger模拟.

我确信它很简单,但我无法想象它!

在此先感谢您的帮助!

python unit-testing mocking python-3.x

24
推荐指数
3
解决办法
1万
查看次数

如何将 doctest 与日志一起使用?

以下 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()
Run Code Online (Sandbox Code Playgroud)

这些页面

似乎暗示logging.StreamHandler(sys.stdout)logger.addHandler(handler)但我的尝试在这方面失败了。(如果不是很明显,我是 python 的新手。)

请帮我修复上面的代码,以便测试通过。


2017 年 6 月 4 日更新:回答00prometheus的评论:当我问这个问题时,接受的使用 doctest 和登录 python 程序的答案似乎不必要地复杂。确实如此,因为这里接受的答案给出了一个更简单的解决方案。在我非常有偏见的意见中,我的问题也比我在原始帖子中已经链接的问题更清楚。

python logging doctest

8
推荐指数
1
解决办法
1442
查看次数

单元测试期间的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。

python logging unit-testing

4
推荐指数
1
解决办法
2130
查看次数

标签 统计

python ×3

logging ×2

unit-testing ×2

doctest ×1

mocking ×1

python-3.x ×1