0
我想單元測試一些調度器調用。我創建了一個超時,需要稍後調用回調。但是,我不想在測試中啓動和停止調度程序。所以,我認爲我可以巧妙地使用main_context.pending()
。然而,我似乎無法得到它的工作:glib調度器在單元測試
import glib
import gobject
def ook():
print('Stup!d monkey')
return False
loop = gobject.MainLoop()
glib.timeout_add(100, ook)
當我添加和運行下面的代碼,沒有打印。
main_context = glib.MainLoop.get_context(loop)
while main_context.pending():
main_context.iteration(False)
當我添加並運行下面的代碼時,字符串確實被打印出來。
loop.run()
任何想法是什麼錯?
有沒有辦法來檢測在給定時間在源中是否有未決事件?否則,它會使測試代碼依賴於調度程序,除非您真正運行調度程序! – Sardathrion
不是我所知道的。超時不是唯一的事件源 - 它們可能不是最常見的事件源,並且不可能知道除超時源以外的任何其他事物是否將在未來的某個時刻發生未決事件。即使超時也不是很精確......我不明白如何在沒有運行循環的情況下對其進行有效的測試,並且我不能想到不運行它的好理由。 – nemequ