为 wxPython 编写单元测试

Aka*_*tav 3 python unit-testing wxpython

我有一个内置的应用程序,其中包含一个用 wxPython 制作的窗口,其中包含一个用于接受用户输入的文本框,并且该enter事件绑定到一个函数并向其发送一个 wx.Frame 对象。输入值通过以下方式访问self.txt.GetValue()

我需要为该函数编写一些单元测试,但似乎无法找到一种方法来创建参数并将其传递给函数,以便仍然可以使用相同的语句访问该值。

我还发现了许多用于测试 python 应用程序的模块,包括 wxPython 页面(pyunit)上的一个,但如何传递值的主要直觉尚不清楚。

我该怎么做呢?

Mik*_*oll 5

如果将该函数与 wxPython 解耦,则可以轻松对其进行单元测试。假设您有一个绑定到事件处理程序的小部件,如下所示:

def on_text_change(self, event):
    my_module.do_something_with_text(self.txt.GetValue())
Run Code Online (Sandbox Code Playgroud)

现在您可以添加单元测试,my_module.do_something_with_text 因为它不依赖于 wxPython。

如果您想创建相当于自动化 UI 测试的内容,可以使用 UIActionSimulator - https://wxpython.org/Phoenix/docs/html/wx.UIActionSimulator.html