单元测试框架 - 信号处理


在测试运行期间更有效地处理 control-C 是由 unittest 的 -c/--catch 命令行选项以及catchbreak参数提供的。启用 catch 中断Behave后,control-C 将允许当前运行的测试完成,然后测试运行将结束并报告迄今为止的所有结果。第二个 control-c 将以通常的方式引发键盘中断。

如果调用了unittest处理程序但未安装signal.SIGINT处理程序,则它会调用默认处理程序。这通常是替换已安装处理程序并委托给它的代码的预期Behave。对于需要禁用unittest control-c 处理的单个测试,可以使用removeHandler() 装饰器。

以下实用程序函数在测试框架内启用 control-c 处理功能 -

单元测试.installHandler()

安装 control-c 处理程序。当收到signal.SIGINT时,所有注册结果都会被调用 TestResult.stop()。

单元测试.registerResult(结果)

注册一个TestResult对象以进行 control-c 处理。注册结果会存储对其的弱引用,因此不会阻止结果被垃圾收集。

单元测试.removeResult(结果)

删除已注册的结果。一旦结果被删除,则将不再在该结果对象上调用 TestResult.stop() 以响应 control-c。

unittest.removeHandler(函数=无)

当不带参数调用时,此函数将删除 control-c 处理程序(如果已安装)。此函数还可以用作测试装饰器,以在执行测试时临时删除处理程序。

图形用户界面测试运行器

安装unittest模块是为了以交互方式发现和运行测试。该实用程序是一个 Python 脚本“inittestgui.py”,它使用 Tkinter 模块,该模块是 TK 图形工具包的 Python 端口。它提供了一个易于使用的 GUI,用于发现和运行测试。

Python unittestgui.py

运行测试

单击“发现测试”按钮。将出现一个小对话框,您可以在其中选择要运行测试的目录和模块。

发现测试

最后,单击开始按钮。将从选定的路径和模块名称中发现测试,结果窗格将显示结果。

结果窗格

为了查看单个测试的详细信息,请选择并单击结果框中的测试 -

个别测试详情

如果您在 Python 安装中没有找到此实用程序,您可以从项目页面http://pyunit.sourceforge.net/获取它。

类似地,基于 wxpython 工具包的实用程序也可用。