📜  UnitTest框架-信号处理

📅  最后修改于: 2020-12-03 05:30:03             🧑  作者: Mango


-c /-catch命令行选项unittest和catchbreak参数一起提供了在测试运行期间对control-C的更有效处理。启用捕获中断行为后,control-C将允许当前运行的测试完成,然后测试运行将结束并报告到目前为止的所有结果。第二个Control-c将以通常的方式引发KeyboardInterrupt。

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

以下实用程序功能可在测试框架内启用Control-C处理功能-

unittest.installHandler()

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

unittest.registerResult(结果)

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

unittest.removeResult(结果)

删除注册结果。删除结果后,将不再响应Control-c在该结果对象上调用TestResult.stop()。

unittest.removeHandler(函数 = None)

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

GUI测试运行器

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

Python unittestgui.py

运行测试

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

发现测试

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

结果窗格

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

个别测试详情

如果在Python安装中找不到该实用程序,则可以从项目页面http://pyunit.sourceforge.net/获得

类似的,基于wxpython工具箱的实用程序也可在此处获得。