UnitTest框架 - 信号处理

在测试运行期间更有效地处理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的实用程序工具包也在那里.