我目前正在使用python_flickr_api上传应用程序的照片: 它使用
问题:我想通过拦截POST请求并创建预先准备好的成功响应来验证上传是否真的在集成测试中发出,以便我的测试可以完全脱机运行,不依赖于Flickr(我也不想上传相同的测试图像100次!)
为此,我尝试使用两个不可思议的库:VCRPy和HTTPretty。它们都不能解决我的问题,因为它们都不支持
很明显,
我应该怎样修复这个问题?
httplib
执行多部分POST请求。问题:我想通过拦截POST请求并创建预先准备好的成功响应来验证上传是否真的在集成测试中发出,以便我的测试可以完全脱机运行,不依赖于Flickr(我也不想上传相同的测试图像100次!)
为此,我尝试使用两个不可思议的库:VCRPy和HTTPretty。它们都不能解决我的问题,因为它们都不支持
httplib
(HTTPretty最接近,仅支持httplib2
),并且我会收到类似以下的错误: Failure/Error: [Errno 32] Broken pipe
Traceback:
...
File "/usr/local/lib/python2.7/site-packages/flickr_api/upload.py", line 92, in upload
r = post(UPLOAD_URL,auth.AUTH_HANDLER,args,photo_file)
File "/usr/local/lib/python2.7/site-packages/flickr_api/upload.py", line 52, in post
r = multipart.posturl(url,fields,files)
File "/usr/local/lib/python2.7/site-packages/flickr_api/multipart.py", line 19, in posturl
return post_multipart(urlparts[1], urlparts[2], fields,files)
File "/usr/local/lib/python2.7/site-packages/flickr_api/multipart.py", line 33, in post_multipart
h.send(body)
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 805, in send
self.sock.sendall(data)
File "/usr/local/lib/python2.7/site-packages/httpretty/core.py", line 243, in sendall
return self._true_sendall(data)
File "/usr/local/lib/python2.7/site-packages/httpretty/core.py", line 216, in _true_sendall
self.truesock.sendall(data, *args, **kw)
File "/usr/local/Cellar/python/2.7.5/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
很明显,
httpretty
正在拦截但会导致断开连接。我应该怎样修复这个问题?
flickr_api
实现这个功能,因为它可以帮我处理 OAuth 这种棘手的问题。我想使用类似于 FakeWeb 的库进行测试,因为我不想让测试与flickr_api
相耦合。 - fatuhokuflickr.upload(photo_file="/path/to/foobar.jpg", title="foobar")
但是编写一个模拟程序非常简单,就像我说的那样,我不想把我的测试与python_flickr_api
的接口耦合在一起。 - fatuhoku