You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When using dependency injection instead of passing the db dependency down through all the layers, a ContextVars is being used. Passing the db sessions via ContextVar over function parameters is working with no problems with the application and results in a cleaner solution.
However with testing, a context is setup in a fixture and is not being propagated to the underlying test, resulting in the underlying function not finding the required context and failing.
Expected behaviour
the test fixture should be propagating the ContextVar down to the test function so it available to the function under test
Screenshots
LookupError: <ContextVar name='db_session_context' at 0x1120f29a0>
tests/test_services/test_part_service.py:23: in test_part_get
item: PartModel = await part_service.create_part(obj_in) # noqa:
app/services/part_service.py:103: in create_part
db_session: AsyncSession = db_session_context.get()
E LookupError: <ContextVar name='db_session_context' at 0x1120f29a0>
--------------------------------- Captured Log ---------------------------------
--------------------------------- Captured Out ---------------------------------
--------------------------------- Captured Err ---------------------------------
INFO [alembic.env] DETECTED aiosqlite driver, stripping from DATABASE_URL for migration
INFO [alembic.env] Database URL: sqlite:///./tests/files/test.db
INFO [alembic.env] Running migrations online
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 9905971ce75e, Adds Parts Table
INFO [alembic.env] DETECTED aiosqlite driver, stripping from DATABASE_URL for migration
INFO [alembic.env] Database URL: sqlite:///./tests/files/test.db
INFO [alembic.env] Running migrations online
INFO [alembic.runtime.migration] Context impl SQLiteImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running downgrade 9905971ce75e -> , Adds Parts Table
Describe the bug
When using dependency injection instead of passing the db dependency down through all the layers, a ContextVars is being used. Passing the db sessions via ContextVar over function parameters is working with no problems with the application and results in a cleaner solution.
However with testing, a context is setup in a fixture and is not being propagated to the underlying test, resulting in the underlying function not finding the required context and failing.
This issue is documented pytest-dev/pytest-asyncio#127 and a PR pytest-dev/pytest-asyncio#161
Expected behaviour
the test fixture should be propagating the ContextVar down to the test function so it available to the function under test
Screenshots
Additional context
Should be resolved by this PR pytest-dev/pytest-asyncio#161
The text was updated successfully, but these errors were encountered: