单元测试中的glib调度程序

时间:2014-02-14 11:10:56

标签: python unit-testing glib

我正在尝试对一些调度程序调用进行单元测试。我创建了一个超时,需要在一段时间后调用回调。但是,我不想在测试中启动和停止调度程序。所以,我认为我可以巧妙地使用main_context.pending()。但是,我似乎无法让它发挥作用:

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()

知道出了什么问题吗?

1 个答案:

答案 0 :(得分:0)

根据API documentation for g_main_context_pending,它

  

检查任何来源是否有针对给定上下文的待处理事件。

在超过100毫秒之后,您的超时源将不会有任何待处理事件。在此之前,它只会有一个没有附加待处理事件的来源。