在测试运行期间更有效地处理control-C由-c/- catch命令行选项提供给unittest,以及 catchbreak 参数.启用catch break行为后,control-C将允许当前正在运行的测试完成,然后测试运行将结束并报告目前为止的所有结果.第二个control-c将以通常的方式引发KeyboardInterrupt.
如果调用unittest处理程序但未安装signal.SIGINT处理程序,则它将调用默认处理程序.这通常是代码替换已安装的处理程序并委托给它的预期行为.对于需要禁用unittest control-c处理的单个测试,可以使用removeHandler()装饰器.
以下实用程序函数在测试框架内启用control-c处理功能 :
unittest.installHandler()
安装control-c处理程序.当收到 signal.SIGINT 时,所有注册的结果都会调用TestResult.stop().
unittest.registerResult(result)
注册 TestResult 对象以进行control-c处理.注册结果会存储对它的弱引用,因此它不会阻止结果被垃圾回收.
unittest.removeResult(result)
删除注册结果.删除结果后,将不再在该结果对象上调用TestResult.stop()以响应control-c.
unittest.removeHandler(function = None)
当不带参数调用时,如果已安装control-c处理程序,则此函数将删除它.此函数还可以用作测试装饰器,以便在执行测试时临时删除处理程序.
GUI测试运行器
unittest模块安装以交互方式发现和运行测试.这个实用程序,Python脚本'inittestgui.py'使用Tkinter模块,这是TK图形工具包的Python端口.它为发现和运行测试提供了一个易于使用的GUI.
Python unittestgui.py
点击'发现测试按钮.将出现一个小对话框,您可以在其中选择要运行测试的目录和模块.
最后,点击开始按钮.将从所选路径和模块名称中发现测试,结果窗格将显示结果.
为了查看单个测试的详细信息,请在结果框中选择并单击测试 :
如果在Python安装中未找到此实用程序,则可以从项目页面 http://pyunit.sourceforge.net/.
类似,基于wxpython的实用程序工具包也在那里.