测试助手

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_delete(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的删除请求。

(另见: falcon.testing.simulate_delete()

simulate_get(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的GET请求。

(另见: falcon.testing.simulate_get()

simulate_head(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的HEAD请求。

(另见: falcon.testing.simulate_head()

simulate_options(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的OPTIONS请求。

(另见: falcon.testing.simulate_options()

simulate_patch(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的补丁请求。

(另见: falcon.testing.simulate_patch()

simulate_post(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的POST请求。

(另见: falcon.testing.simulate_post()

simulate_put(path='/', **kwargs) _ResultBase[源代码]

模拟对WSGI应用程序的PUT请求。

(另见: falcon.testing.simulate_put()

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 用户。

类似于 TestClientASGIConductor 还公开方便的别名,而不使用 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 版本加入.

async simulate_delete(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的删除请求。

(另见: falcon.testing.simulate_delete()

async simulate_get(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的GET请求。

(另见: falcon.testing.simulate_get()

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_head(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的HEAD请求。

(另见: falcon.testing.simulate_head()

async simulate_options(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的OPTIONS请求。

(另见: falcon.testing.simulate_options()

async simulate_patch(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的修补请求。

(另见: falcon.testing.simulate_patch()

async simulate_post(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的POST请求。

(另见: falcon.testing.simulate_post()

async simulate_put(path='/', **kwargs) _ResultBase[源代码]

模拟对ASGI应用程序的PUT请求。

(另见: falcon.testing.simulate_put()

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)[源代码]

封装模拟请求的结果。

参数:
  • iterable (iterable) -- 根据PEP-3333,生成零个或多个字节的iterable。

  • status (str) -- HTTP状态字符串,包括状态代码和原因字符串

  • headers (list) -- 根据PEP-3333列出(header_name,header_value)元组

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

async finalize()[源代码]

最终确定封装的模拟请求。

此方法使请求事件发射器开始发出 'http.disconnect' 事件,然后等待运行模拟ASGI请求的异步CIO任务完成。

class falcon.testing.ResultBodyStream(chunks: Sequence[bytes])[源代码]

用于流式测试结果正文的简单只进读取器。

参数:

chunks (list) -- 对可能随着收集更多正文事件而继续追加的正文块列表的引用。

async read() bytes[源代码]

读取自上次调用以来收集的所有数据。

返回:

自上次调用以来收集的数据,如果没有其他数据可用,则返回空字节串。

返回类型:

bytes

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: Optional[int] = None)[源代码]

关闭模拟连接。

关键字参数:

code (int) -- 根据WebSocket规范发送到应用程序的WebSocket关闭代码(默认值: 1000 )。

async receive_data() bytes[源代码]

从应用程序接收带有二进制数据负载的消息。

挡路将等待此协同例程,直到有消息可用或WebSocket断开连接。

async receive_json() object[源代码]

从应用程序接收带有JSON编码文本有效负载的消息。

挡路将等待此协同例程,直到有消息可用或WebSocket断开连接。

async receive_msgpack() object[源代码]

从应用程序接收带有MessagePack编码的二进制负载的消息。

挡路将等待此协同例程,直到有消息可用或WebSocket断开连接。

async receive_text() str[源代码]

从应用程序接收具有Unicode字符串负载的消息。

挡路将等待此协同例程,直到有消息可用或WebSocket断开连接。

async send_data(payload: Union[bytes, bytearray, memoryview])[源代码]

使用二进制数据负载向应用程序发送消息。

参数:

payload (Union[bytes, bytearray, memoryview]) -- 要发送的二进制数据。

async send_json(media: object)[源代码]

使用JSON编码的有效负载向应用程序发送消息。

参数:

media -- 要作为文本(0x01)有效负载发送的JSON编码对象。

async send_msgpack(media: object)[源代码]

使用MessagePack编码的有效负载向应用程序发送消息。

参数:

media -- 要作为二进制(0x02)负载发送的MessagePack可编码对象。

async send_text(payload: str)[源代码]

使用Unicode字符串负载向应用程序发送消息。

参数:

payload (str) -- 要发送的字符串。

async wait_ready(timeout: Optional[int] = 5)[源代码]

等待连接被接受或拒绝。

可以等待此协同例程,以便暂停执行,直到应用程序接受或拒绝连接。在后一种情况下,将向调用方抛出错误。

关键字参数:

timeout (int) -- 放弃并引发错误之前等待的秒数(默认值: 5 )。

class falcon.testing.Cookie(morsel)[源代码]

表示模拟请求返回的cookie。

参数:

morsel -- A Morsel 从中派生cookie数据的对象。

name

饼干的名字。

类型:

STR

value

cookie的值。

类型:

STR

expires

cookie的过期时间戳,或 None 如果未指定。

类型:

datetime.datetime

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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_typeheaders 争论。

  • 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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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_typeheaders 争论。

  • 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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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 )

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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_typeheaders 争论。

  • 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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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_typeheaders 争论。

  • 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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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 或此类值的列表。如果A list ,该值将转换为逗号分隔的值字符串(例如,“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_typeheaders 争论。

  • 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”头的名称和值。

返回:

请求的结果

返回类型:

Result

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: Optional[Union[str, bytes]] = None, chunk_size: Optional[int] = None, disconnect_at: Optional[Union[int, float]] = 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_at0 被视为特例,并将导致 'http.disconnect' 事件被立即发出(而不是首先发出 'http.request' 事件)。

disconnected

退货 True 如果模拟的客户端连接处于“断开”状态。

类型:

布尔

disconnect(exhaust_body: Optional[bool] = None)[源代码]

将客户端连接状态设置为已断开连接。

调用此方法以模拟客户端立即断开连接并开始发出 'http.disconnect' 事件。

参数:

exhaust_body (bool) -- 设置为 False 为了开始发射 'http.disconnect' 事件,而不首先发出至少一个 'http.request' eve NT。

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() ,添加了 bodyreq_type ,以及 options 如下所述的论点。

关键字参数:
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.TestCasetesttools.TestCase .

app

模拟请求时作为目标的WSGI或ASGI应用程序(缺省为 falcon.App() )。测试应用程序时,需要将其设置为您自己的 falcon.Appfalcon.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)
类型:

对象

setUp()[源代码]

测试夹具在使用前的挂钩方法。

class falcon.testing.SimpleTestResource(status=None, body=None, json=None, headers=None)[源代码]

用于框架组件功能测试的模拟资源。

这个类实现了一个简单的测试资源,可以根据需要对中间件、钩子和Falcon框架本身进行扩展。

只有noop on_get()on_post() 实现了响应程序;当重写这些响应程序或在子类中添加其他响应程序时,可以使用 falcon.testing.capture_responder_args() 钩住以捕获 reqresp帕拉姆 传递给响应程序的参数。响应者也可以用 falcon.testing.set_resp_defaults() 钩住以固定 resp 默认属性 地位body页眉 价值观。

关键字参数:
  • status (str) -- 用于响应的默认状态字符串

  • body (str) -- 响应中使用的默认正文字符串

  • json (JSON serializable) -- 用于响应的默认JSON文档。将序列化为字符串并编码为UTF-8。或者 jsonbody 可以指定,但不能同时指定两者。

  • headers (dict) -- 要包含在响应中的附加头的默认集

called

是否捕获请求/响应。

类型:

布尔

captured_req

最后一个请求对象传递到响应程序的任何一个方法中。

类型:

falcon.Request

captured_resp

最后一个响应对象传递到响应程序方法中的任何一个。

类型:

falcon.Response

captured_kwargs

最后一本夸格斯字典 reqresp ,它被传递到响应程序的任何一个方法中。

类型:

双关语

功能

falcon.testing.rand_string(min, max) str[源代码]

返回随机生成的随机长度的字符串。

参数:
  • min (int) -- 返回的最小字符串长度(含)

  • max (int) -- 要返回的最大字符串长度(含)

falcon.testing.get_unused_port() int[源代码]

获取测试服务器使用的未使用的本地主机端口。

警告

在调用方能够绑定到返回的端口之前,第三方可能会这样做。在这种情况下,调用者将需要使用不同的端口重试。

警告

此方法仅在POSIX系统上测试过,在其他地方可能不起作用。

falcon.testing.redirected(stdout=<_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>, stderr=<_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>)[源代码]

暂时重定向标准输出或标准错误。

例如。:

使用重定向(stderr=os.devnull):

falcon.testing.get_encoding_from_headers(headers)[源代码]

从给定的HTTP标头字典返回编码。

参数:

headers (dict) -- 从中提取编码的字典。头名称必须是小写,或者dict必须支持不区分大小写的查找。