我有一个错误的第三方python模块,它在导入时输出到stdout或stderr,这打破了我的单元测试的输出.
如何临时重定向stdout以隐藏其输出.
限于Python 2.5语法:)
更新,我忘了,更不用说sys.stdout和sys.__stderr__方法并不在这种情况下工作.据我所知,这个有问题的模块正在使用本机代码.
jco*_*ado 21
您也可以使用mock,让你修补sys.stdout,并sys.stderr为你当模块是进口的.使用此策略的测试模块示例如下:
import os
devnull = open(os.devnull, 'w')
from mock import patch
with patch('sys.stdout', devnull):
with patch('sys.stderr', devnull):
import bad_module
# Test cases writen here
Run Code Online (Sandbox Code Playgroud)
正在导入的bad_module第三方模块在何处sys.stdout以及sys.stderr何时正在导入.
Mat*_*ttH 18
你可以这样做:
>>> import sys, os
>>> _stderr = sys.stderr
>>> _stdout = sys.stdout
>>> null = open(os.devnull,'wb')
>>> sys.stdout = sys.stderr = null
>>> print "Bleh"
>>> sys.stderr = _stderr
>>> sys.stdout = _stdout
>>> print "Bleh"
Bleh
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5737 次 |
| 最近记录: |