0
嘲笑的urllib2我遇到过类似的问题,Mocking urllib2.urlopen().read() for different responses如何使用标准的模拟库
但解决不适合我。
当我想模拟urlopen对象时,我的模拟对象总是返回<MagicMock name='urlopen().read()' id='140016097869776'>
。
这里是我想测试一下,mod.py
import urllib2
from zipfile import ZipFile
from io import BytesIO
def verify(url, checksum):
try:
conn = urllib2.urlopen(url)
byte = conn.read()
conn.close()
myzip = ZipFile(BytesIO(byte))
except Exception as e:
err = get_error(400, "Not a valid zip format: %s" % (str(e)))
return Response(err, status=status.HTTP_400_BAD_REQUEST)
return byte
这里是我的讥笑
@mock.patch('mod.urllib2.urlopen')
@mock.patch('mod.ZipFile')
@mock.patch('mod.BytesIO')
def test_verify(self, urlopen_mock, zipfile_mock, bytesio_mock):
conn = mock.Mock()
conn.read.return_value = 'byte'
urlopen_mock.return_value = conn
zf = mock.Mock()
zipfile_mock.return_value = zf
assertEqual(verify('url','checksum'), 'byte')
但是,返回的字节总是<MagicMock name='urlopen().read()' id='140016097869776'>
,不'byte'
我嘲笑。
我错过了什么重要的事情?
这并不为我工作。 –