2

セロリ、モンゴ、レディス、ピラミッドを使用するかなり複雑なアプリがあります。テストには鼻を使います。私はTDDを行っていません(少なくともテストファーストではありません)が、かなりの量のカバレッジを得るために一生懸命努力しています。上記のサービスの一部と統合されている部分に行き詰まっています。たとえば、セロリ タスク間の共有メモリに redis を使用していますが、あまり問題なく memcache に切り替えられるようにしたいので、次の関数を抽象化しました。

import settings
db = StrictRedis(host=settings.db_uri, db=settings.db_name)

def has_task(correlation_id):
    """Return True if a task exists in db."""
    return db.exists(str(correlation_id))

def pop_task(correlation_id):
    """Get a task from db by correlation_id."""
    correlation_id = str(correlation_id) # no unicode allowed
    task_pickle = db.get(correlation_id)
    task = loads(task_pickle)
    if task:
        db.delete(correlation_id)
    return task

def add_task(correlation_id, task_id, model):
    """Add a task to db"""
    return db.set(str(correlation_id), dumps((task_id, model)))

また、永続ストレージに使用している抽象的な Mongo に対しても同様のことを行っています。

ダミーの http サーバーを実行し、ダミーのリクエストを作成し、さらにはダミーのデータベースを作成する統合 Web アプリケーションのテスト スイートを見てきました。セロリとピラミッドは問題ありませんが、mongo と redis のダミーを見つけることができなかったため、これらのサービスが実際に実行されている場合にのみ、上記のテストを実行できます。上記のダミーサービスを提供する方法はありますか?

  1. 外部サービスをインストールして実行する
  2. データベース全体を手動で作成および破棄する (インメモリ ダミーは、後でクリーンアップすることができます)
4

1 に答える 1