[英]Mock 3rd party website for local development with Python requests library
我正在使用Flask构建(连接Facebook的)Web服务器。 这是一个示例路线
@app.route('/login', methods=['GET'])
def login():
graph = facebook.GraphAPI(request.args.get('access_token'))
profile = graph.get_object('me')
return jsonify(profile)
这很好用,但是当我在进行本地开发时,不断访问Facebook服务器似乎是不明智的做法。
将Facebook API重新路由到模拟甚至模拟服务器的最有效方法是什么? 在内部, facebook-sdk
库使用requests
来访问graph.facebook.com
。
我看过这个问题
特别是Dropbox的responses
库,但看起来您必须将每个调用包装在其装饰器中。 对于单元测试套件来说,它会很好地工作,但是我只是想对模拟数据和模拟响应进行开发。
更新:针对Thomas,我一直在考虑类似的解决方案。 我尝试添加:
if config_name == 'development':
print 'monkey'
import requests
def mock(*args, **kwargs):
print args, kwargs
return {}
requests.request = mock
但这似乎并没有改变facebook-sdk
库的行为。
您可以使用app.config
检查debug
模式是否处于打开状态,然后(如果debug
模式处于打开状态)将请求转换为虚拟请求。 我对facebook API不太熟悉,因此(不幸的是)我无法为您写出伪代码。
如何使用flask-testing和模拟库:
import requests
from flask.ext.testing import TestCase
from mock import Mock
class TestLogin(TestCase):
def setUp(self):
requests.request = Mock()
super(TestLogin, self).setUp()
def test_it(self):
resp = self.client.get('/login')
self.assertEquals('right stuff', resp.data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.