1

単体テスト内からクライアントライブラリ(リモートサーバーと通信する)をモックオブジェクトに置き換える方法はありますか?

これが私がやろうとしていることを説明する図です

    +---------------+
    |     tests     |----{ mock }
    +---------------+       |
            |               |
            v               |
    +---------------+       |
    |     model     |       |
    +---------------+       |
            |               |
            v               |
    +---------------+       |
    | client-module |<--{replaces}
    +---------------+
            ^
            :
            :
            v
    +---------------+
    |    service    |
    +---------------+

テストはクライアントモジュールをインポートするモデルをインポートするため、モデルの内部にモックを適用する方法はないようです。

4

1 に答える 1

1

model.pyが

import client_module

インポート時にその機能を使用していません。

import model

...

model.client_module = MyMockModule()

ここでMyMockModule、実際に提供されるものに適したモックが返されclient_moduleます。私はこれを処理するためのsetUp/tearDownのものを示していませんが、うまくいけば、あなたはアイデアを得るでしょう、

インポート時にからのものを使用する場合model 、インポートする前にモックモジュールと交換する必要があります。client_modulesys.modules['client_module']model

于 2010-11-24T13:39:39.770 に答える