我正在使用python unittest框架来测试外部设备。在这个特定的用例中,我实际上想让python做一个耐力测试,需要几天时间。 (一次测试只需要几分钟,但会经常重复。)
在这种情况下,我希望能够优雅地停止测试,并在以后恢复或重新启动它。我可以忍受以后再重新开始,但现在我无法停下来。
通过优雅的停止我想象的是:按下Ctrl-C
后,最后一次测试结束并返回结果。
有没有内置的方法来实现这一目标?如果没有,我怎么做到呢?
答案 0 :(得分:3)
我通过仔细查看unittest文档找到了解决方案: 致电:
unittest.installHandler()
安装了Ctrl-C的信号处理程序,所有结果都是:
unittest.registerResult(result)
如果是Ctrl-C,将正常退出。这正是我所需要的。
答案 1 :(得分:3)
查看unittest command-line docs。
测试运行期间Control-C 等待当前测试结束 然后报告到目前为止的所有结果。第二个控制-C提升了 正常的KeyboardInterrupt异常。
因此,您可以捕获KeyboardInterrupt
异常,以便在报告结果后将下一个测试置于睡眠循环中。然后,睡眠循环可以等待进一步的按键中止整个测试或继续。