是否可以废弃 using 输出的所有异常文本unittest
?
即,如果我有一堆测试,其中一些抛出异常,unittest
模块会自行以红色(至少在 IDLE 中)打印所有异常。有没有办法不打印异常(但保留我使用print
关键字打印的任何文本?
例如,我在tearDownClass()
函数中有要打印的文本,虽然我想打印它,但如果它后面没有 30 行红色异常文本会很好。这可能吗?
是否可以废弃 using 输出的所有异常文本unittest
?
即,如果我有一堆测试,其中一些抛出异常,unittest
模块会自行以红色(至少在 IDLE 中)打印所有异常。有没有办法不打印异常(但保留我使用print
关键字打印的任何文本?
例如,我在tearDownClass()
函数中有要打印的文本,虽然我想打印它,但如果它后面没有 30 行红色异常文本会很好。这可能吗?
If I understand you right, you just want a self-defined logger, right?
Put all the unit tests in a bit try-except
block and catch all the exceptions. Then print it out as you like.
...
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
...
因此,根据comment-41597224,您想故意擦除有用的输出,因为您觉得这不是您的问题。
在这种情况下,替换/进行相关更改Lib\unittest\result.py:_exc_info_to_string
或使用它的方法适用于您的特定情况(可能,addError
或addFailure
)。
或者,您可以将输出通过管道传输到一个独立的脚本/命令,该脚本/命令将使用正则表达式对其进行后处理。
stdout
while 异常stderr
,它就像2>nul
在命令行中一样简单。但是,我仍然建议不要这样做。你确实关心你得到了什么异常,因为:
如果您做到这一点,您可以获得两全其美的结果,这样您既可以获得(过滤的)摘要,也有机会在您怀疑某些事情不正确时查看完整输出。