def test_start_runserver(tmpworkdir, caplog):
mktree(tmpworkdir, {
'app.py': """\
from aiohttp import web
async def hello(request):
return web.Response(text='<h1>hello world</h1>', content_type='text/html')
async def has_error(request):
raise ValueError()
def create_app(loop):
app = web.Application()
app.router.add_get('/', hello)
app.router.add_get('/error', has_error)
return app""",
'static_dir/foo.js': 'var bar=1;',
})
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
aux_app, aux_port, _ = runserver(app_path='app.py', static_path='static_dir')
assert isinstance(aux_app, aiohttp.web.Application)
assert aux_port == 8001
start_app = aux_app.on_startup[0]
stop_app = aux_app.on_shutdown[0]
loop.run_until_complete(start_app(aux_app))
async def check_callback(session):
async with session.get('http://localhost:8000/') as r:
assert r.status == 200
assert r.headers['content-type'].startswith('text/html')
text = await r.text()
assert '<h1>hello world</h1>' in text
assert '<script src="http://localhost:8001/livereload.js"></script>' in text
async with session.get('http://localhost:8000/error') as r:
assert r.status == 500
assert 'raise ValueError()' in (await r.text())
try:
loop.run_until_complete(check_server_running(loop, check_callback))
finally:
loop.run_until_complete(stop_app(aux_app))
assert (
'adev.server.dft INFO: pre-check enabled, checking app factory\n'
'adev.server.dft INFO: Starting aux server at http://localhost:8001 ?\n'
'adev.server.dft INFO: serving static files from ./static_dir/ at http://localhost:8001/static/\n'
'adev.server.dft INFO: Starting dev server at http://localhost:8000 ?\n'
) in caplog
评论列表
文章目录