单元测试断言失败后执行系统状态重置

时间:2018-06-19 08:17:35

标签: python unit-testing integration-testing python-unittest

我对unittests感到有些困惑。我有一个嵌入式系统,我在外面用Python测试。

问题是每次测试通过后我都需要重置系统状态。但是,如果测试失败,它可能会使系统处于我需要重置的任意状态。每次测试后,我都会回到初始状态,但如果断言失败,它将跳过该部分。

因此,处理这种情况的正确方法是什么?我的一些想法是:

  • 将每个测试放在trycatchfinally中,但这看起来不对(unittest已经处理了测试异常)。
  • 将每个测试放在不同的类中,并在其末尾调用tearDown()方法
  • 在每个测试的开始时调用initSystemState()以返回到初始状态(但它比仅重置测试结束时需要重置的内容要慢)

有什么建议吗?理想情况下,如果我进行testSpeed()测试,最后应该调用testSpeedOnStop()函数。也许unittest不是这项工作的正确工具,因为所有功能都有副作用并且正在协同工作,所以也许我应该更倾向于集成测试库,而这些库我还没有探索过。

1 个答案:

答案 0 :(得分:0)

设置状态在测试类的setUp(self)方法中完成。

此方法在每次测试之前自动调用 ,并为每个测试实例提供一个新状态。

每次测试后,运行tearDown方法可能会清除失败测试的残余。

你可以在所有测试之后编写一个setUp / tearDowm来执行befora;更精细的测试可能需要构建存根或模拟对象。