Skip to content

sloria/webtest-aiohttp

Repository files navigation

webtest-aiohttp

Latest version Travis-CI

webtest-aiohttp provides integration of WebTest with aiohttp.web applications.

Supports aiohttp>=2.3.8.

from aiohttp import web
from webtest_aiohttp import TestApp

app = web.Application()

async def hello(request):
    return web.json_response({'message': 'Hello world'})

app.router.add_route('GET', '/', handler)

def test_hello(loop):
    client = TestApp(app, loop=loop)
    res = client.get('/')
    assert res.status_code == 200
    assert res.json == {'message': 'Hello world'}

Installation

pip install webtest-aiohttp

Note: If you are using aiohttp<2.0.0, you will need to install webtest-aiohttp 1.x.

pip install 'webtest-aiohttp<2.0.0'

Usage with pytest

If you are using pytest and pytest-aiohttp, you can make your tests more concise with a fixture.

from aiohttp import web
from webtest_aiohttp import TestApp as WebTestApp

app = web.Application()

async def hello(request):
    return web.json_response({'message': 'Hello world'})

app.router.add_route('GET', '/', handler)

@pytest.fixture()
def testapp(loop):
    return WebTestApp(app, loop=loop)

def test_get(testapp):
    assert testapp.get('/').json == {'message': 'Hello world'}

Project Links

License

MIT licensed. See the bundled LICENSE file for more details.