Skip to content

Commit d3235bf

Browse files
authored
fix: remove autoused fixtures + set dont_patch_engine marker in plugin - DM-6561 (#54)
1 parent 5e35155 commit d3235bf

3 files changed

Lines changed: 22 additions & 13 deletions

File tree

fastapi_sqla/_pytest_plugin.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,8 @@
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
9895
def 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

tests/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@ def pytest_configure(config):
2525
config.addinivalue_line(
2626
"markers", "require_boto3: skip test if boto3 is not installed"
2727
)
28-
config.addinivalue_line("markers", "dont_patch_engines: do not patch engines")
2928

3029

3130
@fixture(scope="session")

tests/test_startup.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
from pytest import fixture, mark, raises
77
from sqlalchemy import text
88

9+
pytestmark = mark.usefixtures("patch_engine_from_config", "patch_create_async_engine")
10+
911

1012
@fixture(params=[True, False])
1113
def case_sensitive_environ(environ, request):

0 commit comments

Comments
 (0)