我是python的新手,嘗試設置功能測試環境。測試環境應通過DBus接收信號並對其進行評估。 DBus信令使用GLib MainLoop。我有以下類封裝的循環:在單元測試中運行glib mainloop的python
class SignalLoop(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.__l = gobject.MainLoop()
def run(self):
self.__l.run()
def quit(self):
self.__l.quit()
,並在模塊中做的DBus處理我的嘗試:
class __ModuleInitializer:
def __init__(self):
print('Module was initialized')
gobject.threads_init()
sl = SignalLoop()
sl.start()
def __del__(self):
print('Module was deinitialized')
sl.quit()
__module_init = __ModuleInitializer()
我也試過如下:
- 設置/ tearDownModule( )不適用於我 - 至少在python 2.5.2
- __init __()和__del __()方法中,並將所有測試用例放在一個類中。 __del __()永遠不會被調用,並且此解決方案不會隨着大量測試用例而擴展。
當我運行代碼時,sl.qui()永遠不會執行,我不知道爲什麼。從控制檯運行時,我必須殺死我的main,因爲它永遠不會返回。然而,這對PyDev測試運行者來說不是問題。
有沒有可以用來破壞測試環境的鉤子?我希望能夠運行單個測試和幾個測試,因此將它「黑入」方法本身不是一種選擇。
你能幫我嗎?