В моем файле main.py, где определено приложение FastApi, мне нужно выполнить некоторую инициализацию, при которой я загружаю данные из базы данных в кеш. Когда мое приложение работает нормально, оно вызывает функцию get_db() для возврата сеанса SqlServer, и эта функция get_db используется в конечных точках с использованием session=Depends(get_db) в параметрах. Мне нужен какой-то вызов, чтобы получить правильную функцию get_db на основе зависимостей приложения, чтобы она использовала версию переопределения, которую я определил в testconf.py, когда я запускаю pytests. Как мне это сделать?
#database.py
engine = create_engine("sqlserver connection string here")
SessionLocal - sessionmaker(autocommit=False,autoflush=False,bind=engine)
def get_db ():
# standard way to get db in FastAPI
db = SessionLocal()
yield db
#main.py
from database import get_db
# When running pytests, its not finding the override version in
# in the app dependencies
if fn := app.dependency_overrides.get(get_db):
sess = next(fn())
else:
sess = next(get_db())
CacheService.load_cache(sess)
testconf.py
#defines fixtures used by pytests
@pytest.fixture
def engine():
url = "sqlite://"
return create_engine(url, ...)
@pytest.fixture
def app_session(engine):
TestingSessionLocal = sessionmaker(...bind=engine)
def override_get_db():
db = TestingSessionLocal()
yield db
app.dependency_overrides[get_db] = override_get_db
return app
@pytest.fixture
def client(app_session):
return TestClient(app=appsession)
#some test
def test_something(app_session, client):
# It loads the caches using a sqlserver session
client.get("url")
Подробнее здесь: https://stackoverflow.com/questions/786 ... o-endpoint
Как получить доступ к зависимости приложения в FastAPI, когда не выполняется внедрение в конечную точку ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как правильно подготовить объект JSON для отправки в конечную конечную точку? [закрыто]
Anonymous » » в форуме Php - 0 Ответы
- 63 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Как создать конечную точку FastAPI, которая может принимать тело формы или JSON?
Anonymous » » в форуме Python - 0 Ответы
- 63 Просмотры
-
Последнее сообщение Anonymous
-