Luk*_*uke 6 python logging doctest
#!/usr/bin/python2.4
import logging
import sys
import doctest
def foo(x):
"""
>>> foo (0)
0
"""
print ("%d" %(x))
_logger.debug("%d" %(x))
def _test():
doctest.testmod()
_logger = logging.getLogger()
_logger.setLevel(logging.DEBUG)
_formatter = logging.Formatter('%(message)s')
_handler = logging.StreamHandler(sys.stdout)
_handler.setFormatter(_formatter)
_logger.addHandler(_handler)
_test()
Run Code Online (Sandbox Code Playgroud)
我想对我所有的打印语句使用 logger 模块。我已经为此查看了前 50 个顶级谷歌链接,他们似乎同意 doctest 使用它自己的标准输出副本。如果使用了打印,如果使用了记录器,它就可以工作,它会记录到根控制台。有人可以用一个代码片段演示一个工作示例,让我可以组合。注意运行测试 doctest 只会在测试结束时附加日志输出,(假设您设置了开关)它不会将它们视为打印语句。
我不确定你为什么要这样做,但如果你确实需要这样做,那么你可以定义你自己的子类DocTestRunner,并重写该run方法:
#imports left out, code not tested - just to point you in the right direction
class MyDocTestRunner(DocTestRunner):
def run(self, test, compileflags=None, out=None, clear_globs=True):
if out is None:
handler = None
else:
handler = StreamHandler(out)
logger = logging.getLogger() # root logger (say)
if handler:
logger.addHandler(handler)
try:
DocTestRunner.run(self, test, compileflags, out, clear_globs)
finally:
if handler:
logger.removeHandler(handler)
handler.close()
Run Code Online (Sandbox Code Playgroud)
然后使用这个跑步者代替DocTestRunner。
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |