跳转到主要内容

使用Flask应用程序模拟HTTP请求的库,无需实际网络操作

项目描述

构建状态   版本

概述

Flask-Loopback允许您在代码中使用编写的Flask应用程序来模拟实际Web服务。如果您正在编写一个将使用现有Web服务的客户端,并想了解它与真实事物的交互效果如何,这非常有用。

Flask-Loopback通过stubbing requests包来实现这一点,而不是实际通过网络发送HTTP请求,这样只有针对您的模拟请求才会到达目的地。

这样做非常简单。您可能已经在某个地方有一个想要使用的Flask应用程序

# myapp.py
>>> import flask

>>> app = flask.Flask(__name__)

>>> @app.route("/some/path")
... def hello():
...     return "hello!"

当您想要实际使用它时,您可以在指定的地址上激活loopback

>>> import requests
>>> from flask_loopback import FlaskLoopback

>>> loopback = FlaskLoopback(app)

>>> with loopback.on(("some-address.com", 80)):
...    print(requests.get("http://some-address.com/some/path").content.decode("utf-8"))
hello!

为了帮助您在请求前后执行更多操作,您可以将请求上下文函数注册为在真实请求周围调用(这是在Flask提供的默认处理器之外进行的)

>>> from contextlib import contextmanager

>>> @loopback.register_request_context_handler
... @contextmanager
... def request_handler(request):
...     # do something before request handling
...     yield
...     # do something after request handling

SSL

默认情况下禁用了SSL,但您可以轻松地启用它

>>> with loopback.on(("some-address.localdomain", 443)):
...    requests.get("https://some-address.localdomain/some/path") # doctest: +IGNORE_EXCEPTION_DETAIL
Traceback (most recent call last):
	...
SSLError
>>> with loopback.on(("some-address.localdomain", 443), ssl=True):
...    requests.get("https://some-address.localdomain/some/path") # doctest: +IGNORE_EXCEPTION_DETAIL
<Response [200]>

许可证

BSD3(见LICENSE

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

flask_loopback-1.6.0.tar.gz (12.0 kB 查看哈希值)

上传时间

构建分布

Flask_Loopback-1.6.0-py3-none-any.whl (7.5 kB 查看哈希值)

上传时间 Python 3

由以下机构支持