如何优雅地停止python单元测试?

时间:2012-11-14 15:08:05

标签: python unit-testing

我正在使用python unittest框架来测试外部设备。在这个特定的用例中,我实际上想让python做一个耐力测试,需要几天时间。 (一次测试只需要几分钟,但会经常重复。)

在这种情况下,我希望能够优雅地停止测试,并在以后恢复或重新启动它。我可以忍受以后再重新开始,但现在我无法停下来。

通过优雅的停止我想象的是:按下Ctrl-C后,最后一次测试结束并返回结果。

有没有内置的方法来实现这一目标?如果没有,我怎么做到呢?

2 个答案:

答案 0 :(得分:3)

我通过仔细查看unittest文档找到了解决方案: 致电:

unittest.installHandler()

安装了Ctrl-C的信号处理程序,所有结果都是:

unittest.registerResult(result)
如果是Ctrl-C,

将正常退出。这正是我所需要的。

答案 1 :(得分:3)

查看unittest command-line docs

  测试运行期间

Control-C 等待当前测试结束   然后报告到目前为止的所有结果。第二个控制-C提升了   正常的KeyboardInterrupt异常。

因此,您可以捕获KeyboardInterrupt异常,以便在报告结果后将下一个测试置于睡眠循环中。然后,睡眠循环可以等待进一步的按键中止整个测试或继续。