0
我正在編寫一個tkinter小部件的單元測試,它是大型應用程序的一部分。 我有一些與標籤上的事件觸發相關的問題,以斷言回調執行。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
繼續執行,而不在解釋器外殼中觸發任何其他命令,測試不會失敗。
任何提示或解決方法?
thx建議。扭曲選項存在,但並沒有做到這一點。此外,當我放置一個set_trace時,我實際上並沒有向'label.event_generate(「」)'添加任何東西,但事件沒有被觸發。 –
andtorg
2014-08-31 17:10:31
當調試器暫停執行時,是否要移動鼠標以便與調試器交互? – 2014-08-31 17:12:31
它不影響結果。我點擊shell窗口或按Alt + Tab,當我恢復執行測試通過 – andtorg 2014-08-31 17:48:00