aiohttp Mock ClientSession Response - PullRequest
       75

aiohttp Mock ClientSession Response

0 голосов
/ 08 февраля 2020

Попытка смоделировать ответ aiohttp.ClientSession для целей тестирования

Мой код выглядит следующим образом:

async def run_request(endpoint: str, **kwargs) -> dict:
    async with aiohttp.ClientSession() as session:
        async with session.post(endpoint, **kwargs) as response:
            response_json = await response.json()

            return {"response": response, "response_json": response_json}

Я хотел бы протестировать свой код с помощью изображения, которое у меня выглядит как это:

@patch("aiohttp.ClientSession.post", <something>)
def test_run_request(self):

Как я могу это сделать?

1 Ответ

0 голосов
/ 11 февраля 2020

Есть много разных решений для этой проблемы, я думаю, что самый простой способ - это использовать aioresponses lib. (https://github.com/pnuckowski/aioresponses)

Но это будет работать правильно, только если вы используете ТОЛЬКО ClientSession без aiohttp.web.Application. Если вы используете CS как часть aiohttp.web.Application, вы сломаете приложение test_client (pytest-aiohttp).

Также посмотрите этот вопрос Как смоделировать aiohttp.client.ClientSession.get asyn c менеджер контекста . Там есть несколько полезных примеров.

...