我有一个wxpythongui,我正试图使用unittest测试我的一些模态对话框。我试着按照这里给出的例子(你必须向下滚动到页面的底部):http://wiki.wxpython.org/Unit%20Testing%20with%20wxPython,但它对我不起作用。它只是在中间冻结。在
我将wiki中的代码修改为:
btn_id = wx.NewId()
class MyDialog(wx.Dialog):
def __init__(self, parent):
wx.Dialog.__init__(self, parent, -1, 'Test')
self.btn = wx.Button(self, btn_id, label="OK!!")
self.btn.Bind(wx.EVT_BUTTON, self.close_dialog)
def close_dialog(self, event):
print 'close me'
class TestMyDialog(unittest.TestCase):
def setUp(self):
self.app = wx.App()
self.frame = wx.Frame(None)
self.frame.Show()
def tearDown(self):
wx.CallAfter(self.app.Exit)
self.app.MainLoop()
def testDialog(self):
def clickOK():
clickEvent = wx.CommandEvent(wx.wxEVT_COMMAND_BUTTON_CLICKED, btn_id)
self.dlg.ProcessEvent(clickEvent)
print 'finished clickOK'
wx.CallAfter(clickOK)
self.ShowDialog()
def ShowDialog(self):
self.dlg = MyDialog(self.frame)
self.dlg.ShowModal()
self.dlg.Destroy()
if __name__ == '__main__':
unittest.main()
据我所知,应该发生的是调用ShowDialog,然后在showmodel上“卡住”,此时clickOk应该运行(由调用wx.CallAfter公司). 这似乎发生了,但由于某些原因,click事件实际上没有得到处理,测试也挂起了。当我运行MyDialog not in testing时,事件绑定工作正常,当单击Ok按钮时对话框关闭。在
我不需要应用程序主循环()以便能够处理事件,对吗?这是怎么回事?在
看看Phoenix中的unittestshttps://github.com/wxWidgets/Phoenix,看看test_对话框.py基地的工作人员世贸中心在
相关问题 更多 >
编程相关推荐