問題は、ユニットテストのコンテキストにあります。テストしているクラスのインスタンスを作成し、そのメソッドの1つをテストしようとしています。このメソッドは、別のモジュールで定義された異なるクラスから取得したデータを使用します。そのモジュールをモックします。インスタンスの名前空間にアクセスするにはどうすればよいですか?テストしているメソッドを実行する前に、メソッドがデータを取得しているクラスの定義を含むモジュールをモックするためにアクセスする必要がありますか?
1 に答える
2
ここで、あなたがやろうとしていることと似ていると思う例を作成します。
Datamodule で定義されている、呼び出すクラスがあるとしますfoo。fooモジュールのインポートと、それ自体を設定するための呼び出しbarのメソッド。foo.Databar.get_data()
testのインスタンスを作成するモジュールを作成したいのですfoo.Dataが、実際のモジュールを使用する代わりに、barそのインスタンスでこれのモック バージョンを使用する必要があります。
これを設定するには、テスト モジュールからインポートし、モック バージョンのモジュールにfoo再バインドします。foo.bar
これがどのように見えるかの例を次に示します。
bar.py:
def get_data(): return 'bar'foo.py:
import bar class Data(object): def __init__(self): self.val = bar.get_data() if __name__ == '__main__': d = Data() print d.val # prints 'bar'test.py:
import foo class bar_mock(object): @staticmethod def get_data(): return 'test' if __name__ == '__main__': foo.bar = bar_mock d = foo.Data() print d.val # prints 'test'
これで簡単なテスト ケースを作成できますが、これを処理するためにモック ライブラリを調べた方がよいでしょう。
于 2012-10-03T17:44:09.160 に答える