如何运行doc-tests且不产生打印输出,兼容测试运行器
如何静默运行doctest且不干扰sys.stdout
不用修改全局sys.stdout,直接给doctest.testmod()指定自定义输出流就能解决问题,完全兼容你的测试运行器套件。
具体做法:
- 用
io.StringIO()创建一个空的内存流,把doctest的输出定向到这里,不会在控制台显示 - 调用
testmod时传入out参数,指定为这个流的write方法,再加上verbose=False确保无额外输出
示例代码:
import doctest import io import some_module # 创建空的内存流,接收doctest输出 silent_stream = io.StringIO() # 运行测试,全程无打印输出 failed, run = doctest.testmod( some_module, optionflags=doctest.ELLIPSIS, out=silent_stream.write, verbose=False )
这种方法不会改动全局的sys.stdout,测试运行器该往JSON写内容完全不受影响,同时你还能正常拿到失败测试数和总运行数。
内容的提问来源于stack exchange,提问作者ginjaemocoes
相关产品推荐
相关产品推荐

