【发布时间】:2014-08-31 16:30:51
【问题描述】:
我正在为一个大型应用程序的一部分的 tkinter 小部件编写单元测试。 我有一些与标签上的事件触发相关的问题,以便断言回调执行。
请注意,我的测试代码在检查按钮的回调时运行良好。在这种情况下,我会写类似于:
a_button = self.sc._inner_frame.winfo_children()[2].winfo_children()[2]
a_button.invoke()
self.assertTrue(self.controller.add_sell_indicator.called)
它有效。
然而,对于标签,没有invoke() 方法,所以我使用event_generate():
label = self.sc._inner_frame.winfo_children()[0].winfo_children()[0]
label.event_generate("<Button-1>")
self.assertTrue(self.controller.get_selected_indicator.called)
但测试失败,因为没有触发事件<Button-1>。
我在label.event_generate 之前和之后交替播放了ipdb.set_trace()。我注意到只有当我把它放在调用之前,然后按c 继续执行,没有在解释器 shell 中触发任何其他命令,测试才不会失败。
任何提示或解决方法?
【问题讨论】:
标签: python tkinter nose python-unittest