Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import asyncio
- from contextlib import ExitStack
- import pytest
- import pytest_asyncio
- from fastapi.testclient import TestClient
- from pytest_postgresql import factories
- from pytest_postgresql.janitor import DatabaseJanitor
- from src.app import get_app
- from src.db.session import get_session, sessionmanager
- @pytest_asyncio.fixture(autouse=True)
- def app():
- with ExitStack():
- yield get_app(init_db=False)
- @pytest_asyncio.fixture
- def mock_client(app):
- with TestClient(app) as c:
- yield c
- test_db = factories.postgresql_proc(port=None, dbname="test_db")
- @pytest_asyncio.fixture(scope="session", autouse=True)
- def event_loop():
- loop = asyncio.get_event_loop_policy().new_event_loop()
- yield loop
- loop.close()
- @pytest_asyncio.fixture(scope="session", autouse=True)
- async def connection_test(test_db, event_loop):
- pg_host = test_db.host
- pg_port = test_db.port
- pg_user = test_db.user
- pg_db = test_db.dbname
- pg_password = test_db.password
- with DatabaseJanitor(
- pg_user, pg_host, pg_port, pg_db, test_db.version, pg_password
- ):
- connection_str = f"postgresql+asyncpg://{pg_user}:@{pg_host}:{pg_port}/{pg_db}"
- sessionmanager.init(connection_str)
- yield sessionmanager
- await sessionmanager.close()
- @pytest_asyncio.fixture(scope="function", autouse=True)
- async def create_tables(connection_test):
- async with sessionmanager.connect() as connection:
- await sessionmanager.drop_all(connection)
- await sessionmanager.create_all(connection)
- @pytest_asyncio.fixture(scope='function')
- async def session_override(app, connection_test):
- async def get_db_override():
- async with sessionmanager.session() as session:
- yield session
- app.dependency_overrides[get_session] = get_db_override
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement