如何在 Python 中运行单元测试时临时隐藏 stdout 或 stderr
我有一个错误的第三方 python 模块,在导入时输出到 stdout 或 stderr,这破坏了我的单元测试的输出。
如何临时重定向 stdout
以隐藏其输出。
仅限于 Python 2.5 语法:)
更新,我忘了提及 sys.stdout
和 sys.__stderr__
方法在这种情况下不起作用。据我所知,这个错误模块正在使用本机代码。
I have a faulty third party python module that is outputing to stdout or stderr while it is imported and this is breaking the output of my unittests.
How can I temporary redirect the stdout
in order to hide its output.
Limit to Python 2.5 syntax :)
Update, I forgot to mention that sys.stdout
and sys.__stderr__
methods do not work in this case. As far as I know this faulty module is using native code.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您还可以使用
mock
来修补sys.stdout< /code> 和
sys.stderr
为您导入模块时提供。使用此策略的测试模块的示例如下:其中
bad_module
是打印到sys.stdout
和sys.stderr
的第三方模块code> 何时导入。You can also use
mock
to let you patchsys.stdout
andsys.stderr
for you when the module is imported. An example of a testing module that using this strategy would be:where
bad_module
is the third party module that is printing tosys.stdout
andsys.stderr
when is being imported.你可以这样做:
You can do it something like this: