跳转到主要内容

Sanic的核心测试客户端

项目描述

Sanic核心测试

此包旨在成为测试Sanic应用程序的核心测试实用程序和客户端。它主要源自sanic.testing,该模块将在未来的Sanic主仓库中被删除。

文档

入门指南

pip install sanic-testing

此包旨在创建一个几乎无缝的过渡。因此,在加载包后,它将自动附加到您的Sanic实例并插入测试客户端。

from sanic import Sanic
from sanic_testing import TestManager

sanic_app = Sanic(__name__)
TestManager(sanic_app)

这将提供对同步(sanic.test_client)和异步(sanic.asgi_client)客户端的访问。这两个客户端也可以直接在TestManager实例上使用。

编写同步测试

测试应该与测试客户端位于Sanic核心时的测试几乎相同。区别只是您需要运行TestManager

import pytest

@pytest.fixture
def app():
    sanic_app = Sanic(__name__)
    TestManager(sanic_app)

    @sanic_app.get("/")
    def basic(request):
        return response.text("foo")

    return sanic_app

def test_basic_test_client(app):
    request, response = app.test_client.get("/")

    assert response.body == b"foo"
    assert response.status == 200

编写异步测试

异步方法的测试最好在安装了pytest-asyncio的情况下进行。再次,以下测试应该对之前在Sanic核心包中使用过asgi_client的人很熟悉。

使用asgi_client的主要好处是它能够深入到您的应用程序内部,并执行您的处理器,而无需启动服务器或进行网络调用。

import pytest

@pytest.fixture
def app():
    sanic_app = Sanic(__name__)
    TestManager(sanic_app)

    @sanic_app.get("/")
    def basic(request):
        return response.text("foo")

    return sanic_app

@pytest.mark.asyncio
async def test_basic_asgi_client(app):
    request, response = await app.asgi_client.get("/")

    assert response.body == b"foo"
    assert response.status == 200

项目详情


下载文件

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

源分发

sanic_testing-24.6.0.tar.gz (10.9 kB 查看哈希值)

上传时间

构建分发

sanic_testing-24.6.0-py3-none-any.whl (10.3 kB 查看哈希值)

上传时间 Python 3

支持者