テスト目的でソケットを使用する TestCase があります。何らかのエラーが発生した場合でも常にソケットを閉じる必要があるため、ソケットを抽象化するコンテキスト マネージャー クラスを作成しました。
テスト フィクスチャは次のようになります。ここMyClassToTest
で、 はソケット デバイスを内部で使用するテスト対象の実際のクラスです。
with SocketContextManager() as device:
foo = MyClassToTest(device)
# make tests with foo
これらの 2 つの行が各テスト フィクスチャで繰り返されるのを避けたいのですが、一貫して に配置されsetUp
ます。しかし、どうすればいいですか?次のコード
def setUp(self):
with SocketContextManager() as device:
self.foo = MyClassToTest(device)
の終了時にデバイスが閉じられるため、 は機能しませんsetUp
。このようにコンテキスト マネージャーのインスタンス化を処理する方法はありますか、それともすべてのテスト フィクスチャでそれを繰り返す必要がありますか?