13

関数に渡すさまざまな URL に対してさまざまな応答が得られるように、urllib2.urlopen ライブラリをモックしようとしています。

テストファイルで今やっている方法は次のようなものです

@patch(othermodule.urllib2.urlopen)
def mytest(self, mock_of_urllib2_urllopen):
    a = Mock()
    a.read.side_effect = ["response1", "response2"]
    mock_of_urllib2_urlopen.return_value = a
    othermodule.function_to_be_tested()   #this is the function which uses urllib2.urlopen.read

私は、othermodule.function_to_be_tested が最初の呼び出しで値 "response1" を取得し、2 番目の呼び出しで "response2" を取得することを期待しています。

しかし、 othermodule.function_to_be_tested() は受け取ります

<MagicMock name='urlopen().read()' id='216621051472'>

実際の応答ではありません。どこが間違っているか、またはこれを行う簡単な方法を提案してください。

4

1 に答える 1