我正在尝试以某种方式模拟 urllib2.urlopen 库,以便我应该为传递给函数的不同 url 获得不同的响应。
我现在在我的测试文件中这样做的方式是这样的
@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”,在第二次调用时获得值“response2”,这就是 side_effect 的作用
但 othermodule.function_to_be_tested() 接收
<MagicMock name='urlopen().read()' id='216621051472'>
而不是实际的反应。请建议我哪里出错了或更简单的方法来做到这一点。