我想检查Python单元测试中的异常,有以下要求:
- 需要报告为失败,而不是错误
- 不得吞并原始异常
我见过很多以下形式的解决方案:
try:
something()
except:
self.fail("It failed")
不幸的是,这些解决方案吞掉了最初的异常。有办法保留原来的异常吗?
我最终使用了 Pierre GM 答案的变体:
try:
something()
except:
self.fail("Failed with %s" % traceback.format_exc())
最佳答案
按照建议,您可以使用通用异常的上下文:
except Exception, error:
self.fail("Failed with %s" % error)
您还可以通过 sys.exc_info()
检索与异常相关的信息
try:
1./0
except:
(etype, evalue, etrace) = sys.exc_info()
self.fail("Failed with %s" % evalue)
元组(etype, evalue, etrace)
在这里(<type 'exceptions.ZeroDivisionError'>, ZeroDivisionError('float division',), <traceback object at 0x7f6f2c02fa70>)
关于Python单元测试: Reporting Exception as Failure,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12510412/