@@ -118,19 +118,27 @@ async def generate_postgres_container() -> AsyncGenerator[DBBuilder]:
118118
119119
120120# ------------------ Session fixtures -------------------
121+ @pytest .fixture (name = "session_maker" , scope = "session" )
122+ def get_session_maker (db_builder : DBBuilder ) -> async_sessionmaker [AsyncSession ]:
123+ """Return a single session-scoped async session maker (one engine for the whole run)."""
124+ return _make_session (db_builder )
125+
126+
121127@pytest .fixture (name = "db_session" )
122- async def get_db_session (db_builder : DBBuilder ) -> AsyncGenerator [AsyncSession ]:
128+ async def get_db_session (
129+ session_maker : async_sessionmaker [AsyncSession ],
130+ ) -> AsyncGenerator [AsyncSession ]:
123131 """Return the test db session."""
124- async_session = _make_session (db_builder )
125- async with async_session () as session :
132+ async with session_maker () as session :
126133 yield session
127134
128135
129136@pytest .fixture (name = "db_session_module" , scope = "module" )
130- async def get_db_session_module (db_builder : DBBuilder ) -> AsyncGenerator [AsyncSession ]:
137+ async def get_db_session_module (
138+ session_maker : async_sessionmaker [AsyncSession ],
139+ ) -> AsyncGenerator [AsyncSession ]:
131140 """Return the test db session."""
132- async_session = _make_session (db_builder )
133- async with async_session () as session :
141+ async with session_maker () as session :
134142 yield session
135143
136144
@@ -176,13 +184,9 @@ async def _clean_db_module(
176184# Helper functions
177185# -------------------------------------------------------
178186def _make_session (db_builder : DBBuilder ) -> async_sessionmaker [AsyncSession ]:
179- """Create a new async session."""
187+ """Create a new async session maker backed by a single engine ."""
180188 connection_string = db_builder .get_connection_string ()
181- db_echo : bool = False
182- db_pool_size : int = 5
183- engine = get_engine (
184- new = True , connection_string = connection_string , echo = db_echo , pool_size = db_pool_size
185- )
189+ engine = get_engine (new = True , connection_string = connection_string , echo = False , pool_size = 5 )
186190 return async_sessionmaker (engine , expire_on_commit = False )
187191
188192
0 commit comments