用ctrl c退出程序

时间:2013-12-04 15:42:41

标签: python unit-testing

我有一个运行多个单元测试的脚本,但是当我点击控制c时它只退出特定的单元测试,而不是整个脚本。有什么办法可以实现吗?这是我的代码,它实际执行单元测试。

    #bitshift right to obtain correct return value, execution of each test.
    returnValue = os.system(path) >> 8
    #running total of failures in the program.
    failures += returnValue

这是我调用此函数并退出程序的方法。

failures = execTests(path, testList)
#exit program with returncode as number of failures
sys.exit(failures)

2 个答案:

答案 0 :(得分:2)

事实上,API中已经存在此功能。来自 Python标准库25.3. unittest — Unit testing framework这里是相关的摘录:

  

-c --catch

     测试运行期间

Control - C 等待当前测试结束,然后报告目前为止的所有结果。第二个 Control - C 引发正常的KeyboardInterrupt异常。

     

有关提供此功能的功能,请参阅Signal Handling

答案 1 :(得分:1)

您是否曾尝试使用try / except(显然尝试除了KeyboardInterrupt之外的等等),然后直接使用sys.exit(失败)或者多次放入中断以摆脱您可能遇到的任何循环然后使用sys.exit(失败)。另一种选择是将失败写入文本文件,然后使用不带任何参数的sys.exit()。然后是管理员从命令行运行的经典修复。或者,Python可能正在等待您的测试完成;再次按CTRL + C应关闭它。当然,您可以选择将输出写入文本文件,然后使用os.system(" taskkill ...")完全退出Python(不特别推荐)这个)。只是几个想法。