私はPythonが初めてで、機能テスト環境をセットアップしようとしています。テスト環境は、DBus を介して信号を受信し、それらを評価します。DBus シグナリングは GLib MainLoop を使用します。ループをカプセル化する次のクラスがあります。
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()
私も次のことを試しました:
- setUp/tearDownModule() は機能しません-少なくともpython 2.5.2では
- __init__() および __del__() メソッドを使用し、すべてのテストケースを単一のクラスに配置します。__del__() が呼び出されることはなく、このソリューションは多くのテスト ケースに対応できません。
コードを実行すると、sl.qui() が実行されず、理由がわかりません。コンソールから実行する場合、メインが返されないため、メインを強制終了する必要があります。ただし、これは PyDev テスト ランナーにとっては問題ではありません。
テスト環境を破壊するために使用できるフックはありますか? 単一のテストといくつかのテストも実行できるようにしたいので、メソッド自体に「ハッキング」することはオプションではありません。
手伝ってくれませんか?