私はMock 0.7.2でPython 2.6.5を使用しており、クラスにパッチデコレータを使用するユニットテストを行っています。パッチを付けてurllib2でモックを初期化する
@patch('urllib2.Request')
def test_do_my_call(self, MockClass):
"""will test that _do_my_call is getting called with correct values"""
instance = MockClass.return_value
mock_urlopen = Mock()
mock_urlopen.return_value = 'foo'
urllib2.urlopen = mock_urlopen
response = do_something('MyData')
self.assertEqual(mock_urlopen.call_count, 1)
self.assertEqual(response, 'foo')
上記のコードは合格し、少なくともurlopenが呼び出されたことを確認しますが、まだ弱いです。
"do_something"メソッドは新しいリクエスト(したがってパッチの必要性)を作成し、urlopenを呼び出します(上記のように、呼び出されることを確認します)。しかし、私は、 "do_something"内からurllib2.Request()に渡されたパラメータをテストする方法があるかどうか疑問に思っていました。たとえば、do_somethingが正しい/予想されるURLと正しい/予期されたヘッダーを渡しましたか?
これは可能ですか?
うん... grncdrは非常に良い点を作っています。しかし、私は答えとしてこれを選択しています。誰かを助けるかもしれないからです。私が間違っていたのは、 "インスタンス"をテストしようとしていたことでした。 "MockClass"でそれをやっていたはずです。ありがとう! –