【问题标题】:Performing an action whenever a unit test fails每当单元测试失败时执行操作
【发布时间】:2012-09-11 10:04:53
【问题描述】:

我正在使用unittest

如果我在测试用例中的测试失败,我喜欢做一些事情(例如,将错误的输出保存到临时文件夹以供以后查看等)。

这段代码属于哪里?

起初,我以为我可以检查if self.assertEqual(...),但事实证明这个函数没有返回任何值。现在它是有意义的,因为它旨在一旦检测到故障就将执行踢出测试功能。

tearDown 无论测试是否成功都会被调用,所以它似乎也无济于事。

【问题讨论】:

  • @hayden 确实如此;但我想做一些比产生输出更复杂的事情(我们的大多数测试失败都是由于代码中的故意更改,所以我想实际询问用户他们是否想根据对新输出的简要检查来验证新输出差异)。
  • @oers:我认为链接是关于其他语言的(Java?我不确定)。我的问题是关于 Python 的,所以我想答案不会一样。
  • @max 对不起 :) 我完全把它读成 java

标签: python unit-testing python-3.x


【解决方案1】:

一种方法是在测试用例实例上设置一个标志,然后在拆除时检查其值:

def setUp(self):
    self.test_passed = false

def tearDown(self):
    if not self.test_passed:
        log()

def test_something(self):
    self.assertEquals(something())
    self.test_passed = true

您可以编写一个装饰器来避免在每次测试结束时将标志设置为 true。

【讨论】:

  • 那行得通。假设我在测试方法中没有多个 return 语句(我不应该这样做),那么每个测试方法的末尾只需要一个 self.test_passed = true 行。
猜你喜欢
  • 2013-05-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-12
  • 1970-01-01
相关资源
最近更新 更多