Python单元测试: Reporting Exception as Failure

标签 python unit-testing

我想检查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/

相关文章:

python - usecols 与 parse_dates 和名称

python - 将图例添加到散点图

java - Junits 的 Guice 和 Mockto

c# - 滥用最小起订量来测试 if 条件

python 复制带有时间戳的文件

python - 与 0.13.1 相比,Pandas 0.15 中的索引速度非常慢

Python 对命名元组列表进行排序

java - 如何模拟namedJdbcTemplate以获得在一个函数中使用两次的两个不同结果

javascript - 您如何在每次测试中用 Jest 模拟默认导出对象?

java - 带继承的 Junit 测试是好是坏?讨论