Как инициировать запуск и завершение работы в течение срока службы при тестировании приложения FastAPI?Python

Программы на Python
Ответить
Anonymous
 Как инициировать запуск и завершение работы в течение срока службы при тестировании приложения FastAPI?

Сообщение Anonymous »

Поскольку я новичок в FastAPI, мне сложно протестировать немного более сложный код, чем я видел в руководстве. Я использую модуль fastapi_cache и Redis следующим образом:

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

from fastapi import Depends, FastAPI, Query, Request
from fastapi_cache.backends.redis import CACHE_KEY, RedisCacheBackend
from fastapi_cache import caches, close_caches

app = FastAPI()

def redis_cache():
return caches.get(CACHE_KEY)

@app.get('/cache')
async def test(
cache: RedisCacheBackend = Depends(redis_cache),
n: int = Query(
...,
gt=-1
)
):
# code that uses redis cache

@app.on_event('startup')
async def on_startup() -> None:
rc = RedisCacheBackend('redis://redis')
caches.set(CACHE_KEY, rc)

@app.on_event('shutdown')
async def on_shutdown() -> None:
await close_caches()
test_main.py выглядит так:

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

import pytest
from httpx import AsyncClient
from .main import app

@pytest.mark.asyncio
async def test_cache():
async with AsyncClient(app=app, base_url="http://test") as ac:
response = await ac.get("/cache?n=150")
Когда я запускаю pytest, он устанавливает для переменной кэша значение None, и тест завершается неудачно. Кажется, я понимаю, почему код не работает. Но как это исправить, чтобы правильно протестировать кеширование?

Подробнее здесь: https://stackoverflow.com/questions/650 ... astapi-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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