繁体   English   中英

模拟第3方网站以使用Python请求库进行本地开发

[英]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

我看过这个问题

python模拟请求和响应

特别是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM