Unittest Framework 简明教程

UnitTest Framework - Signal Handling

通过使用 -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)

移除已注册的结果。移除结果后,control-c 将不再响应该结果对象调用 TestResult.stop()。

unittest.removeHandler(function = None)

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

GUI Test Runner

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

Python unittestgui.py
running tests

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

discover tests

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

result pane

为了看到单个测试的详细信息,选择并单击结果框中的测试即可 −

individual test details

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

类似基于 wxpython 工具包的实用程序也可在该处获得。