Skip to main content

Core testing clients for Sanic

Project description

Sanic Core Test

This package is meant to be the core testing utility and clients for testing Sanic applications. It is mainly derived from sanic.testing which has (or will be) removed from the main Sanic repository in the future.

Getting Started

pip install sanic-testing

The package is meant to create an almost seemless transition. Therefore, after loading the package, it will attach itself to your Sanic instance and insert test clients.

from sanic import Sanic
from sanic_testing import TestManager

sanic_app = Sanic(__name__)
TestManager(sanic_app)

This will provide access to both the sync (sanic.test_client) and async (sanic.asgi_client) clients. Both of these clients are also available directly on the TestManager instance.

Writing a sync test

Testing should be pretty much the same as when the test client was inside Sanic core. The difference is just that you need to run 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

Writing an async test

Testing of an async method is best done with pytest-asyncio installed. Again, the following test should look familiar to anyone that has used asgi_client in the Sanic core package before.

The main benefit of using the asgi_client is that it is able to reach inside your application, and execute your handlers without ever having to stand up a server or make a network call.

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

TODO

  • Create convenience decorators to inject TestManager
  • Add more testing from Sanic core to make sure test clients are robust
  • Add ability for reusable servers in sync testing instead of destroying them on every call

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sanic-testing-0.7.0b1.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

sanic_testing-0.7.0b1-py3-none-any.whl (9.2 kB view details)

Uploaded Python 3

File details

Details for the file sanic-testing-0.7.0b1.tar.gz.

File metadata

  • Download URL: sanic-testing-0.7.0b1.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for sanic-testing-0.7.0b1.tar.gz
Algorithm Hash digest
SHA256 dbdcc54d2cd9760de8a0ce20dbf5c5702a6cfc0e74be67c28bbee4f54369fa02
MD5 b3ce39114045a15b822ac9b4a0df3880
BLAKE2b-256 36f14740a6a46bcd21dd8e9a136e7f30938ee0960347a502ce028a1de5097750

See more details on using hashes here.

File details

Details for the file sanic_testing-0.7.0b1-py3-none-any.whl.

File metadata

  • Download URL: sanic_testing-0.7.0b1-py3-none-any.whl
  • Upload date:
  • Size: 9.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

File hashes

Hashes for sanic_testing-0.7.0b1-py3-none-any.whl
Algorithm Hash digest
SHA256 c429e96a3d4a1cfc5ad09ec7977e0439beffa3012600e167f9c53fe8f7e18b4e
MD5 350a1bad33a78148e1e2a2679140ddee
BLAKE2b-256 033d94787880c3938b477c663c7509e3482230e920d27748bf7d2952d813e966

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page