UnitTest 框架 – 信号处理
UnitTest 框架 – 信号处理
unittest 的 -c/–catch 命令行选项以及catchbreak参数提供了在测试运行期间更有效地处理 control-C 。启用 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 工具包的实用程序也可用。