Estoy tratando de escribir una prueba para el servicio web y quiero crear una base de datos separada para las pruebas cuando las ejecute. Es mi accesorio pytest para realizarlo.
@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
Pero app.dependecy_overrides[get_db] = lambda: db
no funcionó y las solicitudes continúan enviándose a la base de datos principal y no a la de prueba. Uno de mis puntos finales
@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