我正在使用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
。
我已经看过这个问题了
python mock Requests and the response
,特别是Dropbox的responses
库,但看起来你必须在装饰器中包装每个调用。它适用于单元测试套件,但我只是对模拟数据和模拟响应进行开发感兴趣。
更新:回应托马斯,我一直在考虑类似的解决方案。我尝试添加:
if config_name == 'development':
print 'monkey'
import requests
def mock(*args, **kwargs):
print args, kwargs
return {}
requests.request = mock
但这似乎并没有改变facebook-sdk
库的行为。
答案 0 :(得分:0)
您可以使用debug
检查app.config
模式是否已启用,然后(如果debug
模式已启用),请将您的请求转换为虚拟请求。我不熟悉facebook API,所以(不幸的是)我不能为你写出虚拟代码。
答案 1 :(得分:0)
如何使用烧瓶测试和模拟库:
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)