测试助手¶
Falcon应用程序和Falcon本身的功能测试框架。
Falcon的测试模块包含各种测试类和实用功能,以支持基于Falcon的应用程序和Falcon框架本身的功能测试。
测试框架支持UnitTest和Pytest::
# -----------------------------------------------------------------
# unittest
# -----------------------------------------------------------------
from falcon import testing
import myapp
class MyTestCase(testing.TestCase):
def setUp(self):
super(MyTestCase, self).setUp()
# Assume the hypothetical `myapp` package has a
# function called `create()` to initialize and
# return a `falcon.App` instance.
self.app = myapp.create()
class TestMyApp(MyTestCase):
def test_get_message(self):
doc = {'message': 'Hello world!'}
result = self.simulate_get('/messages/42')
self.assertEqual(result.json, doc)
# -----------------------------------------------------------------
# pytest
# -----------------------------------------------------------------
from falcon import testing
import pytest
import myapp
# Depending on your testing strategy and how your application
# manages state, you may be able to broaden the fixture scope
# beyond the default 'function' scope used in this example.
@pytest.fixture()
def client():
# Assume the hypothetical `myapp` package has a function called
# `create()` to initialize and return a `falcon.App` instance.
return testing.TestClient(myapp.create())
def test_get_message(client):
doc = {'message': 'Hello world!'}
result = client.simulate_get('/messages/42')
assert result.json == doc
模拟请求¶
主界面¶
- class falcon.testing.TestClient(app, headers=None)[源代码]¶
模拟对WSGI或ASGI应用程序的请求。
此类为Falcon的
simulate_*()
测试功能。它允许您替换以下内容::simulate_get(app, '/messages') simulate_head(app, '/messages')
用这个:
client = TestClient(app) client.simulate_get('/messages') client.simulate_head('/messages')
为了方便起见,
TestClient
还公开速记别名,而不使用simulate_
前缀。就像典型的Python HTTP客户端一样,可以简单地调用::client = TestClient(app) client.get('/messages') client.request('LOCK', '/files/first')
备注
所有方法都调用
self.simulate_request()
以便通过子类覆盖请求准备。备注
在ASGI请求的情况下,这个类将一次模拟整个应用程序生命周期,包括生命周期和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。的一个实例
ASGIConductor
可以直接实例化,也可以从TestClient
使用上下文管理器模式,如以下示例所示:client = falcon.testing.TestClient(app) # -- snip -- async with client as conductor: async with conductor.simulate_get_stream('/events') as result: pass
- 参数:
app (callable) -- 模拟请求时作为目标的WSGI或ASGI应用程序
- 关键字参数:
headers (dict) -- 要在每个请求上设置的默认标头(默认
None
)。通过将相同标头的值传递给simulate_*()
方法。
- app¶
此客户端实例配置为使用的应用。
- delete(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的删除请求。
(另见:
falcon.testing.simulate_delete()
)在 3.1 版本加入.
- get(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的GET请求。
(另见:
falcon.testing.simulate_get()
)在 3.1 版本加入.
- head(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的HEAD请求。
(另见:
falcon.testing.simulate_head()
)在 3.1 版本加入.
- options(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的OPTIONS请求。
(另见:
falcon.testing.simulate_options()
)在 3.1 版本加入.
- patch(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的补丁请求。
(另见:
falcon.testing.simulate_patch()
)在 3.1 版本加入.
- post(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的POST请求。
(另见:
falcon.testing.simulate_post()
)在 3.1 版本加入.
- put(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的PUT请求。
(另见:
falcon.testing.simulate_put()
)在 3.1 版本加入.
- request(*args, **kwargs) _ResultBase ¶
模拟对WSGI应用程序的请求。
包裹
falcon.testing.simulate_request()
直接针对self.app
.相当于:falcon.testing.simulate_request(self.app, *args, **kwargs)
在 3.1 版本加入.
- simulate_request(*args, **kwargs) _ResultBase [源代码]¶
模拟对WSGI应用程序的请求。
包裹
falcon.testing.simulate_request()
直接针对self.app
.相当于:falcon.testing.simulate_request(self.app, *args, **kwargs)
- class falcon.testing.ASGIConductor(app, headers=None)[源代码]¶
ASGI应用程序的测试导体。
与以下类相比,此类提供了对模拟请求生命周期的更多控制
TestClient
。此外,导体的异步接口提供交错请求和流协议测试,例如Server-Sent Events (SSE)
和 WebSocket 。ASGIConductor
作为上下文管理器实现。进入和退出上下文后,将模拟适当的ASGI寿命事件。在上下文中,可以使用类似于的接口模拟HTTP请求
TestClient
,除了所有simulate_*()
方法是协程::async with testing.ASGIConductor(some_app) as conductor: async def post_events(): for i in range(100): await conductor.simulate_post('/events', json={'id': i}): await asyncio.sleep(0.01) async def get_events_sse(): # Here, we will get only some of the single server-sent events # because the non-streaming method is "single-shot". In other # words, simulate_get() will emit a client disconnect event # into the app before returning. result = await conductor.simulate_get('/events') # Alternatively, we can use simulate_get_stream() as a context # manager to perform a series of reads on the result body that # are interleaved with the execution of the post_events() # coroutine. async with conductor.simulate_get_stream('/events') as sr: while some_condition: # Read next body chunk that was received (if any). chunk = await sr.stream.read() if chunk: # TODO: Do something with the chunk pass # Exiting the context causes the request event emitter to # begin emitting ``'http.disconnect'`` events and then awaits # the completion of the asyncio task that is running the # simulated ASGI request. asyncio.gather(post_events(), get_events_sse())
备注
因为
ASGIConductor
接口使用协程,不能直接与pytest等同步测试框架一起使用。作为一种解决办法,可以通过将测试包装在内联异步函数中,然后通过
falcon.async_to_sync()
或者用来装饰测试函数falcon.runs_sync()
。或者,您可以尝试搜索PyPI,查看是否有适用于您选择的测试框架的异步插件。例如,
pytest-asyncio
插件可用于pytest
用户。类似于
TestClient
,ASGIConductor
还公开方便的别名,而不使用simulate_
前缀。与典型的异步HTTP客户端一样,可以简单地调用::await conductor.get('/messages') await conductor.request('LOCK', '/files/first')
- 参数:
app (callable) -- 模拟请求时指向的ASGI应用程序。
- 关键字参数:
headers (dict) -- 要在每个请求上设置的默认标头(默认
None
)。通过将相同标头的值传递给simulate_*()
方法。
- app¶
此客户端实例配置为使用的应用。
- async delete(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的删除请求。
(另见:
falcon.testing.simulate_delete()
)在 3.1 版本加入.
- async get(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的GET请求。
(另见:
falcon.testing.simulate_get()
)在 3.1 版本加入.
- get_stream(*args, **kwargs)¶
使用流响应模拟对ASGI应用程序的GET请求。
(另请参阅:
falcon.testing.simulate_get()
以获取支持的关键字参数列表。)此方法返回一个异步上下文管理器,该管理器可用于获取托管
StreamedResult
实例。退出上下文将自动完成结果对象,导致请求事件发射器开始发出'http.disconnect'
事件,然后等待运行模拟ASGI请求的任务完成。在下面的示例中,从响应中读取一系列流式正文块:
async with conductor.get_stream('/events') as sr: while some_condition: # Read next body chunk that was received (if any). chunk = await sr.stream.read() if chunk: # TODO: Do something with the chunk. For example, # a series of server-sent events could be validated # by concatenating the chunks and splitting on # double-newlines to obtain individual events. pass
在 3.1 版本加入.
- async head(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的HEAD请求。
(另见:
falcon.testing.simulate_head()
)在 3.1 版本加入.
- async options(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的OPTIONS请求。
(另见:
falcon.testing.simulate_options()
)在 3.1 版本加入.
- async patch(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的修补请求。
(另见:
falcon.testing.simulate_patch()
)在 3.1 版本加入.
- async post(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的POST请求。
(另见:
falcon.testing.simulate_post()
)在 3.1 版本加入.
- async put(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的PUT请求。
(另见:
falcon.testing.simulate_put()
)在 3.1 版本加入.
- async request(*args, **kwargs) _ResultBase ¶
模拟对ASGI应用程序的请求。
包裹
falcon.testing.simulate_request()
直接针对self.app
.相当于:falcon.testing.simulate_request(self.app, *args, **kwargs)
在 3.1 版本加入.
- simulate_get_stream(path='/', **kwargs)[源代码]¶
使用流响应模拟对ASGI应用程序的GET请求。
(另请参阅:
falcon.testing.simulate_get()
以获取支持的关键字参数列表。)此方法返回一个异步上下文管理器,该管理器可用于获取托管
StreamedResult
实例。退出上下文将自动完成结果对象,导致请求事件发射器开始发出'http.disconnect'
事件,然后等待运行模拟ASGI请求的任务完成。在下面的示例中,从响应中读取一系列流式正文块:
async with conductor.simulate_get_stream('/events') as sr: while some_condition: # Read next body chunk that was received (if any). chunk = await sr.stream.read() if chunk: # TODO: Do something with the chunk. For example, # a series of server-sent events could be validated # by concatenating the chunks and splitting on # double-newlines to obtain individual events. pass
- async simulate_request(*args, **kwargs) _ResultBase [源代码]¶
模拟对ASGI应用程序的请求。
包裹
falcon.testing.simulate_request()
直接针对self.app
.相当于:falcon.testing.simulate_request(self.app, *args, **kwargs)
- simulate_ws(path='/', **kwargs)[源代码]¶
模拟到ASGI应用程序的WebSocket连接。
所有关键字参数都传递给
falcon.testing.create_scope_ws()
。此方法返回一个异步上下文管理器,该管理器可用于获取托管
falcon.testing.ASGIWebSocketSimulator
实例。退出上下文将模拟WebSocket的关闭(如果尚未关闭),并等待运行模拟的ASGI请求的任务完成。在以下示例中,从ASGI应用程序接收一系列WebSocket文本事件:
async with conductor.simulate_ws('/events') as ws: while some_condition: message = await ws.receive_text()
- websocket(*args, **kwargs)¶
模拟到ASGI应用程序的WebSocket连接。
所有关键字参数都传递给
falcon.testing.create_scope_ws()
。此方法返回一个异步上下文管理器,该管理器可用于获取托管
falcon.testing.ASGIWebSocketSimulator
实例。退出上下文将模拟WebSocket的关闭(如果尚未关闭),并等待运行模拟的ASGI请求的任务完成。在以下示例中,从ASGI应用程序接收一系列WebSocket文本事件:
async with conductor.websocket('/events') as ws: while some_condition: message = await ws.receive_text()
在 3.1 版本加入.
- class falcon.testing.Result(iterable, status, headers)[源代码]¶
封装模拟请求的结果。
- 参数:
- status¶
响应中给定的HTTP状态字符串
- 类型:
STR
- status_code¶
HTTP状态字符串的代码部分
- 类型:
利息
- headers¶
一个不区分大小写的字典,包含响应中的所有头,cookie除外,可以通过 cookies 属性。
备注
当前不支持响应中一个头的多个实例;未指定哪个值将“获胜”并表示为 headers .
- 类型:
CaseInsensitiveDict
- cookies¶
一本字典
falcon.testing.Cookie
按名称从响应中分析的值。- 类型:
双关语
- encoding¶
响应正文的文本编码,或
None
如果无法确定编码。- 类型:
STR
- content¶
原始响应主体,或
bytes
如果响应主体为空。- 类型:
字节
- text¶
类型的解码响应正文
str
。如果内容类型未指定编码,则假定为UTF-8。- 类型:
STR
- json¶
反序列化JSON主体。将
None
如果主体没有要反序列化的内容。否则,如果响应不是有效的JSON,则会引发错误。- 类型:
JSON可序列化
- class falcon.testing.StreamedResult(body_chunks, status, headers, task, req_event_emitter)[源代码]¶
封装ASGI请求的流式结果。
- 参数:
body_chunks (list) -- 一份体块清单。该列表可以在实例化结果对象之后追加。
status (str) -- HTTP状态字符串,包括状态代码和原因字符串
headers (list) -- 根据PEP-3333列出(header_name,header_value)元组
task (asyncio.Task) -- 计划的模拟请求,可能已经完成,也可能尚未完成。
finalize()
在返回之前将等待任务。req_event_emitter (ASGIRequestEventEmitter) -- 对用于模拟通过ASGI应用程序的Receive()方法发送到ASGI应用程序的事件的事件发射器的引用。
finalize()
将导致事件发射器模拟'http.disconnect'
事件,然后返回。
- status¶
响应中给定的HTTP状态字符串
- 类型:
STR
- status_code¶
HTTP状态字符串的代码部分
- 类型:
利息
- headers¶
一个不区分大小写的字典,包含响应中的所有头,cookie除外,可以通过 cookies 属性。
备注
当前不支持响应中一个头的多个实例;未指定哪个值将“获胜”并表示为 headers .
- 类型:
CaseInsensitiveDict
- cookies¶
一本字典
falcon.testing.Cookie
按名称从响应中分析的值。- 类型:
双关语
- encoding¶
响应正文的文本编码,或
None
如果无法确定编码。- 类型:
STR
- stream¶
原始响应正文,作为字节流。
- 类型:
ResultStream
- class falcon.testing.ResultBodyStream(chunks: Sequence[bytes])[源代码]¶
用于流式测试结果正文的简单只进读取器。
- 参数:
chunks (list) -- 对可能随着收集更多正文事件而继续追加的正文块列表的引用。
- class falcon.testing.ASGIWebSocketSimulator[源代码]¶
模拟用于测试Falcon ASGI应用程序的WebSocket客户端。
此类提供了一种在Falcon ASGI应用程序中测试WebSocket端点的方法,而不必与实际的ASGI服务器交互。虽然在真实服务器上进行测试当然很重要,但是使用模拟连接可以更高效、更透明地满足许多功能测试。
备注
ASGIWebSocketSimulator类不是设计为直接实例化的;而是应该通过
simulate_ws()
。- ready¶
True
如果已经接受了WebSocket连接并且客户端仍然连接,False
不然的话。- 类型:
布尔
- closed¶
True
如果WebSocket连接已被应用程序拒绝或关闭,或者客户端已断开连接。- 类型:
布尔
- close_code¶
如果连接关闭,则由应用程序提供的WebSocket关闭代码,或者
None
如果连接已打开。- 类型:
利息
- subprotocol¶
应用程序希望接受的子协议,或者
None
如果未指定,则为。- 类型:
STR
- headers¶
一个可迭代的
[name, value]
两项迭代,其中 name 是标头名称,并且 价值 是应用程序在接受WebSocket连接时返回的每个标头的标头值。此属性解析为None
如果连接未被接受,则返回。- 类型:
可迭代的 [可重复的[字节] ]
- async close(code: int | None = None)[源代码]¶
关闭模拟连接。
- 关键字参数:
code (int) -- 根据WebSocket规范发送到应用程序的WebSocket关闭代码(默认值:
1000
)。
- async receive_msgpack() object [源代码]¶
从应用程序接收带有MessagePack编码的二进制负载的消息。
挡路将等待此协同例程,直到有消息可用或WebSocket断开连接。
- async send_data(payload: bytes | bytearray | memoryview)[源代码]¶
使用二进制数据负载向应用程序发送消息。
- 参数:
payload (Union[bytes, bytearray, memoryview]) -- 要发送的二进制数据。
- async send_json(media: object)[源代码]¶
使用JSON编码的有效负载向应用程序发送消息。
- 参数:
media -- 要作为文本(0x01)有效负载发送的JSON编码对象。
- class falcon.testing.Cookie(morsel)[源代码]¶
表示模拟请求返回的cookie。
- 参数:
morsel -- A
Morsel
从中派生cookie数据的对象。
- name¶
饼干的名字。
- 类型:
STR
- value¶
cookie的值。
- 类型:
STR
- expires¶
cookie的过期时间戳,或
None
如果未指定。
- path¶
限制此cookie的路径前缀,或
None
如果未指定。- 类型:
STR
- domain¶
限制此cookie的域,或
None
如果未指定。- 类型:
STR
- max_age¶
cookie的生存时间(秒),或
None
如果未指定。- 类型:
利息
- secure¶
cookie是否只能通过https从客户端传输。
- 类型:
布尔
- http_only¶
cookie是否只能包含在客户机的未脚本请求中。
- 类型:
布尔
独立方法¶
- falcon.testing.simulate_get(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的GET请求。
等同于:
simulate_request(app, 'GET', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 要请求的URL路径..注意:路径可能包含查询字符串。然而,无论是 query_string 也不是 params 在这种情况下可以指定。
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
file_wrapper (callable) -- 返回迭代值的Callable,用作 wsgi.file_wrapper 在WSGI环境中(默认值:
None
)。在以下情况下,这可用于测试高性能文件传输 resp.stream 设置为类似文件的对象。host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_head(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的HEAD请求。
等同于:
simulate_request(app, 'HEAD', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 要请求的URL路径..注意:路径可能包含查询字符串。然而,无论是 query_string 也不是 params 在这种情况下可以指定。
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_post(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的POST请求。
等同于:
simulate_request(app, 'POST', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 请求的URL路径
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .content_type (str) -- 要用于请求中的Content-Type标头的值。如果指定,则此值将优先于为中的Content-Type标头设置的任何值 headers 关键字参数。这个
falcon
模块提供了许多 constants for common media types 。headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
body (str) -- 请求的正文(默认值为‘’)。该值将在WSGI环境中编码为UTF-8。或者,可以传递一个字节字符串,在这种情况下,它将按原样使用。
json (JSON serializable) -- 要序列化为请求正文的JSON文档(默认值:
None
)。如果指定,则重写 body 并将Content-Type标头设置为'application/json'
属性指定的任何值,重写 content_type 或 headers 争论。file_wrapper (callable) -- 返回迭代值的Callable,用作 wsgi.file_wrapper 在WSGI环境中(默认值:
None
)。在以下情况下,这可用于测试高性能文件传输 resp.stream 设置为类似文件的对象。host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_put(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的PUT请求。
等同于:
simulate_request(app, 'PUT', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 请求的URL路径
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .content_type (str) -- 要用于请求中的Content-Type标头的值。如果指定,则此值将优先于为中的Content-Type标头设置的任何值 headers 关键字参数。这个
falcon
模块提供了许多 constants for common media types 。headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
body (str) -- 请求的正文(默认值为‘’)。该值将在WSGI环境中编码为UTF-8。或者,可以传递一个字节字符串,在这种情况下,它将按原样使用。
json (JSON serializable) -- 要序列化为请求正文的JSON文档(默认值:
None
)。如果指定,则重写 body 并将Content-Type标头设置为'application/json'
属性指定的任何值,重写 content_type 或 headers 争论。file_wrapper (callable) -- 返回迭代值的Callable,用作 wsgi.file_wrapper 在WSGI环境中(默认值:
None
)。在以下情况下,这可用于测试高性能文件传输 resp.stream 设置为类似文件的对象。host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_options(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的OPTIONS请求。
等同于:
simulate_request(app, 'OPTIONS', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 请求的URL路径
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_patch(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的补丁请求。
等同于:
simulate_request(app, 'PATCH', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 请求的URL路径
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .content_type (str) -- 要用于请求中的Content-Type标头的值。如果指定,则此值将优先于为中的Content-Type标头设置的任何值 headers 关键字参数。这个
falcon
模块提供了许多 constants for common media types 。headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
body (str) -- 请求的正文(默认值为‘’)。该值将在WSGI环境中编码为UTF-8。或者,可以传递一个字节字符串,在这种情况下,它将按原样使用。
json (JSON serializable) -- 要序列化为请求正文的JSON文档(默认值:
None
)。如果指定,则重写 body 并将Content-Type标头设置为'application/json'
属性指定的任何值,重写 content_type 或 headers 争论。host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_delete(app, path, **kwargs) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的删除请求。
等同于:
simulate_request(app, 'DELETE', path, **kwargs)
备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 参数:
app (callable) -- 要调用的应用程序
path (str) -- 请求的URL路径
- 关键字参数:
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .content_type (str) -- 要用于请求中的Content-Type标头的值。如果指定,则此值将优先于为中的Content-Type标头设置的任何值 headers 关键字参数。这个
falcon
模块提供了许多 constants for common media types 。headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
body (str) -- 请求的正文(默认值为‘’)。该值将在WSGI环境中编码为UTF-8。或者,可以传递一个字节字符串,在这种情况下,它将按原样使用。
json (JSON serializable) -- 要序列化为请求正文的JSON文档(默认值:
None
)。如果指定,则重写 body 并将Content-Type标头设置为'application/json'
属性指定的任何值,重写 content_type 或 headers 争论。host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。设置为0
在不首先发射的情况下模拟立即断开连接'http.request'
。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.simulate_request(app, method='GET', path='/', query_string=None, headers=None, content_type=None, body=None, json=None, file_wrapper=None, wsgierrors=None, params=None, params_csv=False, protocol='http', host='falconframework.org', remote_addr=None, extras=None, http_version='1.1', port=None, root_path=None, cookies=None, asgi_chunk_size=4096, asgi_disconnect_ttl=300) _ResultBase [源代码]¶
模拟对WSGI或ASGI应用程序的请求。
针对WSGI或ASGI应用程序执行请求。对于WSGI,使用
wsgiref.validate
以确保响应有效。备注
在ASGI请求的情况下,此方法将一次模拟整个应用生命周期,包括寿命和客户端断开事件。为了模拟多个交错请求,或者测试流端点(诸如发出服务器发送的事件的端点),
ASGIConductor
可用于更精确地控制应用程序生命周期。- 关键字参数:
app (callable) -- 要调用的WSGI或ASGI应用程序
method (str) -- 要在请求中使用的HTTP方法(默认值:“get”)
path (str) -- 请求的URL路径(默认:“/”。我是说…注意:路径可能包含查询字符串。然而,两者都不是 query_string 也不 params 在这种情况下可以指定。
root_path (str) -- 与应用程序对象相对应的请求URL“路径”的初始部分,以便应用程序知道其虚拟“位置”。默认为空字符串,表示应用程序对应于服务器的“根”。
protocol -- 用于URL方案的协议(默认:“http”)。
port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,‘http’为80,‘https’为443)。也可以传递字符串,只要它可以被解析为int。
params (dict) -- 查询字符串参数的字典,其中每个键都是参数名,并且每个值都是
str
或者可以转换成str
或此类值的列表。如果Alist
,该值将转换为逗号分隔的值字符串(例如,“thing=1,2,3”)。params_csv (bool) -- 设置为
True
将查询字符串参数中的列表值编码为逗号分隔值(例如,‘thing=1,2,3’)。否则,将通过指定参数的多个实例(例如,‘Thing=1&Thing=2&Thing=3’)对参数进行编码。默认为False
。query_string (str) -- 要包含在请求中的原始查询字符串(默认:
None
)。如果指定,则重写 params .content_type (str) -- 要用于请求中的Content-Type标头的值。如果指定,则此值将优先于为中的Content-Type标头设置的任何值 headers 关键字参数。这个
falcon
模块提供了许多 constants for common media types 。headers (dict) -- 额外的标头作为类dict(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
body (str) -- 请求的正文(默认值为‘’)。该值将在WSGI环境中编码为UTF-8。或者,可以传递一个字节字符串,在这种情况下,它将按原样使用。
json (JSON serializable) -- 要序列化为请求正文的JSON文档(默认值:
None
)。如果指定,则重写 body 并将Content-Type标头设置为'application/json'
属性指定的任何值,重写 content_type 或 headers 争论。file_wrapper (callable) -- 返回迭代值的Callable,用作 wsgi.file_wrapper 在WSGI环境中(默认值:
None
)。在以下情况下,这可用于测试高性能文件传输 resp.stream 设置为类似文件的对象。host (str) -- 用于完全限定请求URL的主机名部分的字符串(默认为:“falconframework.org”)。
remote_addr (str) -- 用作请求的远程IP地址的字符串(默认值:‘127.0.0.1’)。对于WSGI,这对应于‘REMOTE_ADDR’环境变量。对于ASGI,这对应于用于连接范围中的“客户端”字段的IP地址。
http_version (str) -- 要模拟的HTTP版本。必须是“2”、“2.0”、“1.1”、“1.0”或“1”(默认值为“1.1”)。如果设置为“1.0”,则不会将主机标头添加到作用域。
wsgierrors (io) -- 要用作的流 wsgierror 在WSGI环境中(默认
sys.stderr
)asgi_chunk_size (int) -- 将在单个文件中发送到ASGI应用程序的最大字节数
'http.request'
事件(默认值为4096)。asgi_disconnect_ttl (int) -- 在发出请求之前,自请求启动以来等待的最大秒数
'http.disconnect'
应用程序调用Receive()函数时发生的事件(默认值为300)。extras (dict) -- 要添加到WSGI的其他值
environ
请求的字典或ASGI作用域(默认值:None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- 返回:
请求的结果
- 返回类型:
- falcon.testing.capture_responder_args(req, resp, resource, params)[源代码]¶
用于捕获响应程序参数的钩子之前。
将以下属性添加到挂接响应程序的资源类:
captured_req
captured_resp
captured_kwargs
此外,如果请求中存在Capture-Req-Body-Bytes头部,则会添加以下属性:
captured_req_body
在请求中包括Capture-Req-Media标头(设置为任意值)将添加以下属性:
capture-req-media
- async falcon.testing.capture_responder_args_async(req, resp, resource, params)[源代码]¶
用于捕获响应程序参数的钩子之前。
的异步版本
capture_responder_args()
。
- falcon.testing.set_resp_defaults(req, resp, resource, params)[源代码]¶
用于设置默认响应属性的前钩子。
此挂接仅将响应正文、状态和标头设置为 _default_status, _ default_body,和 _default_headers 假定在资源对象上定义的属性。
- async falcon.testing.set_resp_defaults_async(req, resp, resource, params)[源代码]¶
包装
set_resp_defaults()
穿着协和套装。
低水平Utils¶
- class falcon.testing.StartResponseMock[源代码]¶
表示wsgi的模拟对象 start_response 可赎回的。
- call_count¶
次数 start_response 被叫来。
- 类型:
利息
- status¶
HTTP状态行,例如“785 TPS封面未附”。
- 类型:
STR
- headers¶
传递给的原始头列表 start_response ,根据PEP-333。
- 类型:
列表
- headers_dict¶
头不区分大小写
dict
-像对象,而不是list
.- 类型:
双关语
- class falcon.testing.ASGIRequestEventEmitter(body: str | bytes | None = None, chunk_size: int | None = None, disconnect_at: int | float | None = None)[源代码]¶
按需将事件发送到ASGI应用程序。
此类可用于驱动可调用的标准ASGI应用程序,以便对相关应用程序执行功能测试。
备注
为了确保应用程序能够处理规范允许的ASGI事件中的细微变化,此类变化以未指定的间隔应用于发出的事件。这包括是否使用 more_body 字段是否显式设置,或者请求是否 body 事件中的块偶尔是空的,
- 关键字参数:
body (str) -- 发出http.request事件时要使用的正文内容。可以是空字符串。如果是字节字符串,将按原样使用;否则将编码为UTF-8(默认
b''
)。chunk_size (int) -- 单个http.request事件中包含的最大字节数(默认值为4096)。
disconnect_at (float) -- 在此之后开始发射的Unix时间戳
'http.disconnect'
事件(现在默认为+30s)。该值可以是int
或者是float
,具体取决于所需的精度。设置 disconnect_at 至0
被视为特例,并将导致'http.disconnect'
事件被立即发出(而不是首先发出'http.request'
事件)。
- disconnected¶
退货
True
如果模拟的客户端连接处于“断开”状态。- 类型:
布尔
- class falcon.testing.ASGILifespanEventEmitter(shutting_down)[源代码]¶
将ASGI寿命事件发送到ASGI应用程序。
此类可用于驱动可调用的标准ASGI应用程序,以便对相关应用程序执行功能测试。
在模拟生存期和每个请求的事件时,每个事件流都需要单独调用ASGI可调用函数;一个具有生存期事件发射器,另一个具有请求事件发射器。异步者
Condition
可用于暂停寿命发射器,直到所有所需的请求事件都已发出。- 关键字参数:
shutting_down (asyncio.Condition) -- 的一个实例
asyncio.Condition
它将在发出最终关闭事件之前等待 ('lifespan.shutdown
)。
- class falcon.testing.ASGIResponseEventCollector[源代码]¶
收集和验证应用程序返回的ASGI事件。
- events¶
应用程序发出的事件的可迭代数,按原样从应用程序收集。
- 类型:
可迭代的
- headers¶
表示应用程序在正文中发出的ISO-8859-1解码标头的(str,str)元组的可迭代数组
'http.response.start'
eve NT。- 类型:
可迭代的
- status¶
对象的正文中由应用程序发出的HTTP状态代码
'http.response.start'
eve NT。- 类型:
利息
- body_chunks¶
一个可迭代的
bytes
应用程序通过以下方式发出的对象'http.response.body'
事件。- 类型:
可迭代的
- more_body¶
这款应用程序是否会释放更多的身体块。将会是
None
如果未知(即,应用程序尚未发出任何'http.response.body'
事件。)- 类型:
布尔
- 抛出:
TypeError -- 应用程序发出的事件字段属于意外类型。
ValueError -- 无效的事件名称或字段值。
- falcon.testing.create_environ(path='/', query_string='', http_version='1.1', scheme='http', host='falconframework.org', port=None, headers=None, app=None, body='', method='GET', wsgierrors=None, file_wrapper=None, remote_addr=None, root_path=None, cookies=None) Dict[str, Any] [源代码]¶
创建模拟PEP-3333环境
dict
用于模拟WSGI请求。- 关键字参数:
path (str) -- 请求的路径(默认
'/'
)query_string (str) -- 要模拟的查询字符串,不带前导
'?'
(默认''
)。查询字符串按原样传递(不会以百分比编码)。http_version (str) -- 要模拟的HTTP版本。必须是
'2'
,'2.0'
,'1.1'
,'1.0'
,或'1'
(默认'1.1'
)。如果设置为'1.0'
,则不会将主机标头添加到作用域。scheme (str) -- URL方案,或者
'http'
或'https'
(默认'http'
)host (str) -- 请求的主机名(默认
'falconframework.org'
)port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,对于
'http'
和443'https'
)。也可以传递字符串,只要它可以被解析为int。headers (dict) -- 标头作为类字典(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
root_path (str) -- 属性的值
SCRIPT_NAME
环境变量,在PEP-333中描述:‘与应用程序对象相对应的请求URL的“路径”的初始部分,以便应用程序知道其虚拟“位置”。如果应用程序与服务器的“根”相对应,则这可能是一个空字符串。“(默认''
)app (str) -- 的别名已弃用 root_path 。如果两个科瓦格都通过了, root_path 优先。
body (str) -- 请求的正文(默认
''
)。该值将在WSGI环境中编码为UTF-8。或者,可以传递一个字节字符串,在这种情况下,它将按原样使用。method (str) -- 要使用的HTTP方法(默认
'GET'
)wsgierrors (io) -- 要用作的流 wsgi错误 (默认)
sys.stderr
)file_wrapper -- 可调用,返回一个ITerable,用作 wsgi.file_wrapper 在环境中。
remote_addr (str) -- 请求的远程地址,以用作
'REMOTE_ADDR'
环境变量(默认None
)cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供Set-Cookie头的名称和值。
- falcon.testing.create_scope(path='/', query_string='', method='GET', headers=None, host='falconframework.org', scheme=None, port=None, http_version='1.1', remote_addr=None, root_path=None, content_length=None, include_server=True, cookies=None) Dict[str, Any] [源代码]¶
创建模拟ASGI作用域
dict
用于模拟HTTP请求。- 关键字参数:
path (str) -- 请求的路径(默认
'/'
)query_string (str) -- 要模拟的查询字符串,不带前导
'?'
(默认''
)。查询字符串按原样传递(不会以百分比编码)。method (str) -- 要使用的HTTP方法(默认
'GET'
)headers (dict) -- 标头作为类字典(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。当请求将包括正文时,Content-Length报头应该包含在此列表中。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
host (str) -- 请求的主机名(默认
'falconframework.org'
)。这还决定了请求中的主机标头的值。scheme (str) -- URL方案,或者
'http'
或'https'
(默认'http'
)port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,对于
'http'
和443'https'
)。也可以传递字符串,只要它可以被解析为int。http_version (str) -- 要模拟的HTTP版本。必须是
'2'
,'2.0'
,'1.1'
,'1.0'
,或'1'
(默认'1.1'
)。如果设置为'1.0'
,则不会将主机标头添加到作用域。remote_addr (str) -- 用于连接作用域中“客户端”字段的请求的远程地址(默认为“无”)
root_path (str) -- 装载此应用程序的根路径;与WSGI中的SCRIPT_NAME相同(默认
''
)。content_length (int) -- 请求正文的预期内容长度(默认值
None
)。如果指定,该值将用于设置请求中的Content-Length头部。include_server (bool) -- 设置为
False
要不在作用域中设置“server”键,请执行以下操作dict
(默认True
)。cookies (dict) -- Cookie作为类DICT(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对项都提供“Set-Cookie”头的名称和值。
- falcon.testing.create_scope_ws(path='/', query_string='', headers=None, host='falconframework.org', scheme=None, port=None, http_version='1.1', remote_addr=None, root_path=None, include_server=True, subprotocols=None, spec_version='2.1') Dict[str, Any] [源代码]¶
创建模拟ASGI作用域
dict
用于模拟WebSocket请求。- 关键字参数:
path (str) -- 请求的路径(默认
'/'
)query_string (str) -- 要模拟的查询字符串,不带前导
'?'
(默认''
)。查询字符串按原样传递(不会以百分比编码)。headers (dict) -- 标头作为类字典(映射)对象,或产生一系列两个成员( name , 价值 )可迭代。每对字符串都提供HTTP标头的名称和值。如果需要,可以将多个标头值组合成单个( name , 价值 )当所讨论的报头支持列表格式时,通过用逗号连接值进行配对(另请参阅RFC 7230和RFC 7231)。当请求将包括正文时,Content-Length报头应该包含在此列表中。标头名称不区分大小写。。。注意:如果未提供User-Agent标头,则默认为::F‘Falcon-Client/{Falcon.__Version__}’
host (str) -- 请求的主机名(默认
'falconframework.org'
)。这还决定了请求中的主机标头的值。scheme (str) -- URL方案,或者
'ws'
或'wss'
(默认'ws'
)port (int) -- 要模拟的TCP端口。默认为给定方案使用的标准端口(即,对于
'ws'
和443'wss'
)。也可以传递字符串,只要它可以被解析为int。http_version (str) -- 要模拟的HTTP版本。必须是
'2'
,'2.0'
,或'1.1'
(默认'1.1'
)。remote_addr (str) -- 用于连接作用域中“客户端”字段的请求的远程地址(默认为“无”)
root_path (str) -- 装载此应用程序的根路径;与WSGI中的SCRIPT_NAME相同(默认
''
)。include_server (bool) -- 设置为
False
要不在作用域中设置“server”键,请执行以下操作dict
(默认True
)。spec_version (str) -- 要模拟的ASGI规范版本(默认
'2.1'
)。subprotocols (Iterable[str]) -- 客户端希望向服务器通告的子协议(默认
[]
)。
- falcon.testing.create_req(options=None, **kwargs) Request [源代码]¶
创建并返回一个新的请求实例。
此函数可用于方便地创建WSGI环境,并使用它实例化
falcon.Request
一气呵成。此函数的参数与
falcon.testing.create_environ()
,除了一个额外的 options 关键字参数可以设置为falcon.RequestOptions
配置请求解析的某些方面来代替默认值。
- falcon.testing.create_asgi_req(body=None, req_type=None, options=None, **kwargs) Request [源代码]¶
创建并返回新的ASGI请求实例。
此函数可用于方便地创建ASGI作用域,并使用它实例化
falcon.asgi.Request
一气呵成。此函数的参数与
falcon.testing.create_scope()
,添加了 body , req_type ,以及 options 如下所述的论点。- 关键字参数:
body (bytes) -- 要用于请求的正文数据(默认值为b‘’)。如果值为
str
,它将被UTF-8编码为字节字符串。req_type (object) -- 的子类
falcon.asgi.Request
实例化实例化。如果未指定,则标准falcon.asgi.Request
类将被简单地使用。options (falcon.RequestOptions) -- 的一个实例
falcon.RequestOptions
这应该用来确定请求解析的某些方面,而不是缺省值。
- falcon.testing.closed_wsgi_iterable(iterable)[源代码]¶
包装可迭代对象以确保其
close()
方法被调用。包装给定的 iterable in an iterator utilizing a
for
loop as illustrated in the PEP-3333 server/gateway side example 。最后,如果迭代器有一个close()
方法,则在异常或耗尽迭代时调用该方法。此外,从迭代中产生的第一个字节串(如果有的话)在返回包装的迭代器之前是预取的,以确保wsgi
start_response
即使wsgi应用程序是生成器,也会调用函数。- 参数:
iterable (iterable) -- 根据PEP-3333,生成零个或多个字节的iterable。
- 返回:
一种迭代器,产生与 iterable
- 返回类型:
iterator
其他帮手¶
测试用例¶
- class falcon.testing.TestCase(methodName='runTest')[源代码]¶
扩展
unittest
支持WSGI/ASGI功能测试。备注
如果可用,使用
testtools
代替unittest
.这个基类为unittest风格的测试用例提供了一些额外的管道,以帮助模拟WSGI或ASGI请求,而不必启动实际的Web服务器。各种模拟方法派生自
falcon.testing.TestClient
。只需从测试用例类中的此类继承,而不是
unittest.TestCase
或testtools.TestCase
.- app¶
模拟请求时作为目标的WSGI或ASGI应用程序(缺省为
falcon.App()
)。测试应用程序时,需要将其设置为您自己的falcon.App
或falcon.asgi.App
。例如::from falcon import testing import myapp class MyTestCase(testing.TestCase): def setUp(self): super(MyTestCase, self).setUp() # Assume the hypothetical `myapp` package has a # function called `create()` to initialize and # return a `falcon.App` instance. self.app = myapp.create() class TestMyApp(MyTestCase): def test_get_message(self): doc = {'message': 'Hello world!'} result = self.simulate_get('/messages/42') self.assertEqual(result.json, doc)
- 类型:
对象
- class falcon.testing.SimpleTestResource(status=None, body=None, json=None, headers=None)[源代码]¶
用于框架组件功能测试的模拟资源。
这个类实现了一个简单的测试资源,可以根据需要对中间件、钩子和Falcon框架本身进行扩展。
只有noop
on_get()
和on_post()
实现了响应程序;当重写这些响应程序或在子类中添加其他响应程序时,可以使用falcon.testing.capture_responder_args()
钩住以捕获 req , resp 和 帕拉姆 传递给响应程序的参数。响应者也可以用falcon.testing.set_resp_defaults()
钩住以固定 resp 默认属性 地位 , body 和 页眉 价值观。- 关键字参数:
- called¶
是否捕获请求/响应。
- 类型:
布尔
- captured_req¶
最后一个请求对象传递到响应程序的任何一个方法中。
- 类型:
- captured_resp¶
最后一个响应对象传递到响应程序方法中的任何一个。
- 类型:
- captured_kwargs¶
最后一本夸格斯字典
req
和resp
,它被传递到响应程序的任何一个方法中。- 类型:
双关语
功能¶
- falcon.testing.get_unused_port() int [源代码]¶
获取测试服务器使用的未使用的本地主机端口。
警告
在调用方能够绑定到返回的端口之前,第三方可能会这样做。在这种情况下,调用者将需要使用不同的端口重试。
警告
此方法仅在POSIX系统上测试过,在其他地方可能不起作用。