4

私は rabbitmq を使用して記述された Python プロジェクトを持っています。そのための単体テストをどのように記述すべきか、またはベスト プラクティスとは何かを考えています。

このコードでは、rabbitmq サーバーをバックグラウンドで実行する必要があるため、私が思いついた 3 つのオプションは次のとおりです。

  1. テストスイートの開始時にrabbitが実行されているかどうかをチェックし、実行されていない場合は失敗するチェッカーを作成します-rabbitmqを手動で開始する必要があるため理想的ではありません
  2. 各テストsetUpでrabbitmqを使用してプロセスを自動的に開始し、tearDownでプロセスを強制終了します-何らかの理由でこれにより接続エラーが発生します
  3. モックアウトrabbitmq - これに関する提案やヒントはありますか?

ありがとう!

ジョン

4

1 に答える 1

1

間違いなく、rabbitmq を単体テストから除外することを好みます。

Rabbit mq の依存関係を回避するために偽の上位クラスを書き直しています。これにより、パブリッシャー メソッドを呼び出したり、1 つのレシーバー チェッカー メソッドを呼び出したりするためのインターフェイスがいくつか提供されます。

class FakePublisher(Publisher)
    def __init__(self):
        pass
    def call_consumer(self, msg):
        self.consumer(msg)

class test(unittest.TestCase):
    def test_foo(self):
        publisher = FakePublisher()
        ret = publisher.call_consumer(msg("foo"))
        self.assertEqual(ret, True)
于 2012-09-18T10:31:23.517 に答える