我有一个运行多个单元测试的脚本,但是当我点击控制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)
答案 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(不特别推荐)这个)。只是几个想法。