Unit tests
Simple unit test
Async unit test
Надо поставить плагин для pytest — pytest-asyncio
Test exceptions
Запустить тест с набором параметров
Тест асинхронного запроса с асинхронным контекстом
Инструменты:
pytest
pytest-mock
pytest-asyncio
aiohttp
Пусть есть такой код (делаем асинхронно GET http запрос к API и парсим ответ с помощью pydantic):
Сложность в этом кусочке:
Пишем тест:
Где:
[1] — импортируем нашу асинхронную функцию для тестов
[2] — проставляем метку для плагина pytest-asyncio, чтобы pytest смог запустить асинхронный код
[3] — Для удобства проставляем тип для нашей фикстуры (эту аннотацию поддерживает pytest-mock)
[4] — Собираем mock-объект для aiohttp.ClientResponse
[5] — Проставляем ответ для вызова асинхронной функции (4), при этом обрати внимание, что ответ получаем из асинхронного контекста, который формировали в (2)
[6] — Проставляем ответ для вызова асинхронной функции get — (3)
[7] — Проставляем ответ, который получаем при заходе в контекст (1)
[8] — Запускаем саму асинхронную функцию, для которой мы наконец-то пропатчили все сайд эффекты
Last updated