是否可以废弃使用unittest
输出的所有异常文本?
即,如果我有一堆测试,并且其中一些测试会抛出异常,unittest
模块会将其自身打印为红色(至少在IDLE中)所有异常。有没有办法不打印例外(但是留在我使用print
关键字打印的任何文字中?
例如,我有一个要在tearDownClass()
函数中打印的文本,虽然我想要打印,但如果没有30行红色异常文本,那就太好了。这可能吗?
答案 0 :(得分:1)
如果我理解你的话,你只需要一个自定义的记录器,对吗?
将所有单元测试放在try-except
块中并捕获所有异常。然后根据需要打印出来。
...
try:
def test1(unit.tests):
pass
def test2(unit.tests):
pass
except Exception, e:
print 'here is the exception message', repr(e)
# Use your own function to deal with print function or whatever you want here
...
答案 1 :(得分:0)
所以,根据comment-41597224,你想故意擦除有用的输出,因为你觉得它不是你的问题。
在这种情况下,请替换/对Lib\unittest\result.py:_exc_info_to_string
或使用适用于您的具体案例的方法(可能是addError
或addFailure
)进行相关更改。
或者,您可以将输出通过管道输出到一个独立的脚本/命令,该脚本/命令将使用正则表达式对其进行后处理。
stdout
的例外情况下将结果写入stderr
,则在命令行中就像2>nul
一样简单。但是,我仍然建议不要这样做。你确实关心你得到的例外,因为:
如果你做到这一点,你就可以获得两全其美的效果,这样你就可以得到(过滤的)摘要,并且如果你怀疑某些事情不对,就有机会看到完整的输出。