#python #unit-testing #python-asyncio #aiohttp
Вопрос:
Я хочу запустить несколько модульных тестов в своем проекте, которые включали подключение к локальному веб-серверу. Я подумал, что мне это пригодится aiohttp
. Я хочу запускать модульные тесты с помощью встроенного unittest
модуля.
Я настроил маршруты aiohttp
и определил пару тестов. Например, один из тестов подключается к http://localhost:8080/helloworld
Мой код выглядит так:
async def run_tests(): if __name__ == '__main__': await unittest.main() async def main(): app = web.Application() app.add_routes(routes) runner = web.AppRunner(app) await runner.setup() await web.TCPSite(runner, port=50000).start() await run_tests() asyncio.run(main())
Но когда я запускаю сценарий, модульные тесты не запускаются, а веб-сервер не отвечает (хотя и запускается).
Замена run_tests()
на другую функцию работает. например, следующий код считает до 60, а затем останавливается:
async def do_nothing(): for i in range(60): print(i) await asyncio.sleep(1) async def main(): app = web.Application() app.add_routes(routes) runner = web.AppRunner(app) await runner.setup() await web.TCPSite(runner, port=50000).start() await do_nothing() asyncio.run(main())