fastapi icon indicating copy to clipboard operation
fastapi copied to clipboard

Didnt work dependency_overrides

Open KenKi0 opened this issue 2 years ago • 1 comments

First Check

  • [X] I added a very descriptive title to this issue.
  • [X] I used the GitHub search to find a similar issue and didn't find it.
  • [X] I searched the FastAPI documentation, with the integrated search.
  • [X] I already searched in Google "How to X in FastAPI" and didn't find any information.
  • [X] I already read and followed all the tutorial in the docs and didn't find an answer.
  • [X] I already checked if it is not related to FastAPI but to Pydantic.
  • [X] I already checked if it is not related to FastAPI but to Swagger UI.
  • [X] I already checked if it is not related to FastAPI but to ReDoc.

Commit to Help

  • [X] I commit to help with one of those options 👆

Example Code

@router.get("/", response_model=List[RoomPayload])
def read(db: Session = Depends(get_db),
               user=Depends(manager)):

    q = db.query(Room).all()

    if not q:
        raise HTTPException(status_code=404, detail=f"Rooms not found")

    return q

@pytest.fixture(scope="session")
def db_engine():
    engine = create_engine(SQLALCHEMY_DATABASE_URL)
    if not database_exists:
        create_database(engine.url)

    Base.metadata.create_all(bind=engine)

    yield engine


@pytest.fixture(scope="function")
def db(db_engine):
    connection = db_engine.connect()
    connection.begin()
    db = Session(bind=connection)

    yield db

    db.rollback()
    connection.close()


@pytest.fixture(scope="function")
def client(db):
    app.dependency_overrides[get_db] = lambda: db

    with TestClient(app) as c:
        yield c

Description

I am trying to write test for web service and I want to create a separate database for tests when you run them. It is my pytest fixture for realise it and on of my endpoints. But app.dependecy_overrides[get_db] = lambda: db didnt work and requests continue to be sent to the main database and not the test one.

Operating System

Windows

Operating System Details

No response

FastAPI Version

fastapi==0.66

Python Version

3.8

Additional Context

No response

KenKi0 avatar Mar 03 '22 15:03 KenKi0

same on fastapi==0.79

SaraFarron avatar Aug 03 '22 13:08 SaraFarron