1616 asyncio_support = False
1717
1818
19- @fixture (scope = "session" )
20- def sqla_version_tuple ():
21- from sqlalchemy import __version__
22-
23- return tuple (int (i ) for i in __version__ .split ("." ))
19+ def pytest_configure (config ):
20+ config .addinivalue_line ("markers" , "dont_patch_engines: do not patch sqla engines" )
2421
2522
2623@fixture (scope = "session" )
@@ -94,16 +91,16 @@ def sqla_modules():
9491 )
9592
9693
97- @fixture ( autouse = True )
94+ @fixture
9895def sqla_reflection (sqla_modules , sqla_connection , db_url ):
9996 import fastapi_sqla
10097
10198 fastapi_sqla .Base .metadata .bind = sqla_connection
10299 fastapi_sqla .Base .prepare (sqla_connection )
103100
104101
105- @fixture ( autouse = True )
106- def engine_from_config (request , db_url , sqla_connection , sqla_transaction ):
102+ @fixture
103+ def patch_engine_from_config (request , db_url , sqla_connection , sqla_transaction ):
107104 """So that all DB operations are never written to db for real."""
108105 if "dont_patch_engines" in request .keywords :
109106 yield
@@ -122,7 +119,9 @@ def sqla_transaction(sqla_connection):
122119
123120
124121@fixture
125- def session (sqla_transaction , sqla_connection ):
122+ def session (
123+ sqla_transaction , sqla_connection , sqla_reflection , patch_engine_from_config
124+ ):
126125 """Sqla session to use when creating db fixtures.
127126
128127 While it does not write any record in DB, the application will still be able to
@@ -159,8 +158,8 @@ async def async_sqla_connection(async_engine, event_loop):
159158 yield connection
160159 await connection .rollback ()
161160
162- @fixture ( autouse = True )
163- async def patch_async_sessionmaker (
161+ @fixture
162+ async def patch_create_async_engine (
164163 async_sqlalchemy_url , async_sqla_connection , request
165164 ):
166165 """So that all async DB operations are never written to db for real."""
@@ -175,9 +174,18 @@ async def patch_async_sessionmaker(
175174 yield create_async_engine
176175
177176 @fixture
178- async def async_session (async_sqla_connection ):
177+ async def async_session (
178+ async_sqla_connection , sqla_reflection , patch_create_async_engine
179+ ):
179180 from fastapi_sqla .asyncio_support import _AsyncSession
180181
181182 session = _AsyncSession (bind = async_sqla_connection )
182183 yield session
183184 await session .close ()
185+
186+
187+ else :
188+
189+ @fixture
190+ async def patch_create_async_engine ():
191+ pass
0 commit comments