Как вы используете httpx AsyncClient с pytest в fastapi?Python

Программы на Python
Anonymous
Как вы используете httpx AsyncClient с pytest в fastapi?

Сообщение Anonymous »

Я перепробовал все, что смог найти, но не могу заставить работать асинхронные тесты.
Я получаю сообщение об ошибке RuntimeError: этот цикл событий уже запущен запускаю TestClient (что имеет смысл на основе документации), но я получаю httpx.ConnectError: [Errno 8] имя узла и имя сервера не указано или неизвестно с использованием httpx AsyncClient.
У меня есть простой тест:

Код: Выделить всё

@pytest.fixture(scope="module")
async def async_client() -> Generator:
async with AsyncClient(app=app, base_url='http://0.0.0.0') as client:
yield client

@pytest.mark.asyncio@mock.patch('apps.core.views.requests.get', new=mocked_get_request)
async def test_get_non_json_response(async_client: AsyncClient):
response = await async_client.get("/mymedia")
assertEqual(response.json()['error']['message']['message'], 'Not json')
Где /media:

Код: Выделить всё

@app.get('/mymedia')
async def my_media(request: Request, cache: RedisCacheBackend = Depends(redis_cache)):
return await my_media_ep(request, cache=cache)

Код: Выделить всё

my_media_ep
— это длинная функция с несколькими асинхронными вызовами API.
Я также пробовал ее, как предложено в документации по асинхронным тестам, но получил ту же ошибку.
Есть предложения или примеры?

Подробнее здесь: https://stackoverflow.com/questions/668 ... in-fastapi

Вернуться в «Python»