编写wxPython的单元测试

3
我有一个使用wxPython构建的应用程序,其中包含一个文本框以接收用户输入,enter事件绑定到一个函数,并将wx.Frame对象发送到该函数。可以使用self.txt.GetValue()来访问输入值。
我需要为该函数编写一些单元测试,但似乎找不到一种方法来创建并传递参数给该函数,以便仍然可以使用相同的语句访问该值。
我还发现了许多用于测试Python应用程序的模块,包括wxPython页面上的一个(pyunit),但如何传递值的主要思路并不清楚。
我该如何做?
1个回答

5
如果您将函数从wxPython中分离出来,就可以轻松地进行单元测试。假设您有一个绑定到事件处理程序的小部件,像这样:

def on_text_change(self, event):
    my_module.do_something_with_text(self.txt.GetValue())

现在你可以为my_module.do_something_with_text添加单元测试,因为它不依赖于wxPython。
如果您想创建相当于自动化UI测试的内容,可以使用UIActionSimulator - https://wxpython.org/Phoenix/docs/html/wx.UIActionSimulator.html

1
谢谢Mike!这正是我最终所做的,但我还是保留了问题,以防有更好的解决方法。 - Akash Srivastav
1
我忘了提到这一点,但是您也可以使用https://wxpython.org/Phoenix/docs/html/wx.UIActionSimulator.html来测试UI本身。我更新了我的答案以反映这一点。 - Mike Driscoll
顺便提一下,在 https://docs.wxpython.org/wx.UIActionSimulator.html 引用的 UIActionSimulator 示例可以在 https://github.com/wxWidgets/wxWidgets/blob/130e6693e10cd2af31f10da61724127ea9998020/samples/uiaction/uiaction.cpp 找到。 - maratbn
谢谢。这在过去的几年里有些变动。 - Mike Driscoll

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接