忽略测试结果的stderr输出
问题描述:
我想用nose
测试一个包。在我写入stderr
的其中一项测试中,这会导致测试在Jenkins
中报告为中断(我开始使用nose
进行测试并生成Junit .xml
输出以确定成功) 是否可以登录stderr
或对其进行检查某些值?忽略测试结果的stderr输出
所以车费我的测试看起来大致是这样的:
def testFunc() {
f1()
f2() }
而且因为我写的从内到stderr失败,我可以告诉鼻子忽略这个或测试失去了一些东西(我希望它只是失败如果发生异常)
编辑: 错误输出导致失败的假设是错误的。在100年代的产品线之间是一个例外。 (由于某种原因,jenkins先显示未格式化(不换行)输出,然后是异常跟踪,之后输出再一次,换行),我只是忽略了这个例外)
答
如果你不想看到stderr,你可以使用logging
tutorial。
实施例:
import logging
logging.basicConfig(level=logging.ERROR)
# instead of sys.stderr.write():
logging.warning("This is a warning!")
在这种情况下,警告低于日志级别阈值,所以它不会被打印到stderr。如果你想看到错误,但不一定要实时,你可以指定一个日志文件(文件名参数为logging.basicConfig)。
你试过重定向stderr吗? http://*.com/questions/6796492/python-temporarily-redirect-stdout-stderr – Qlaus 2012-07-24 17:17:43