Settings done right
This commit is contained in:
@ -12,7 +12,10 @@ from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker
|
||||
|
||||
from app.lib import settings
|
||||
from app.lib.sqlalchemy_plugin import DBConnectionSettings, create_db_engine
|
||||
from app.lib.test_extras.db_setup import TestingDatabaseSetup
|
||||
from app.lib.test_extras.db_setup import (
|
||||
TestingDatabaseSetup,
|
||||
TestingSettingsInitOptions,
|
||||
)
|
||||
from main import app
|
||||
|
||||
# A Guide To Database Unit Testing with Pytest and SQLAlchemy
|
||||
@ -21,11 +24,11 @@ from main import app
|
||||
|
||||
engine = create_db_engine(
|
||||
connection_settings=DBConnectionSettings(
|
||||
username=settings.testing.DB_USER,
|
||||
password=settings.testing.DB_PASSWORD,
|
||||
host=settings.testing.DB_HOST,
|
||||
port=settings.testing.DB_PORT,
|
||||
database=settings.testing.DB_NAME,
|
||||
username=settings.db.USER,
|
||||
password=settings.db.PASSWORD,
|
||||
host=settings.db.HOST,
|
||||
port=settings.db.PORT,
|
||||
database=settings.db.NAME,
|
||||
)
|
||||
)
|
||||
|
||||
@ -66,6 +69,18 @@ async def db_session() -> AsyncGenerator[AsyncSession, None]:
|
||||
pytest_plugins = ()
|
||||
|
||||
|
||||
db_options = TestingSettingsInitOptions(
|
||||
DB_HOST=settings.db.HOST,
|
||||
DB_PORT=settings.db.PORT,
|
||||
DB_NAME=settings.db.NAME,
|
||||
DB_USER=settings.db.USER,
|
||||
DB_PASSWORD=settings.db.PASSWORD,
|
||||
DB_TEMPLATE_NAME=settings.testing.DB_TEMPLATE_NAME,
|
||||
DROP_DATABASE_BEFORE_TESTS=settings.testing.DROP_DATABASE_BEFORE_TESTS,
|
||||
DROP_DATABASE_AFTER_TESTS=settings.testing.DROP_DATABASE_AFTER_TESTS,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def async_client() -> AsyncTestClient:
|
||||
return AsyncTestClient(app=app)
|
||||
@ -73,12 +88,12 @@ def async_client() -> AsyncTestClient:
|
||||
|
||||
def pytest_configure(config: Config) -> None:
|
||||
logging.info(f"Starting tests: {datetime.utcnow()}")
|
||||
db_setup = TestingDatabaseSetup(options=settings.testing)
|
||||
db_setup = TestingDatabaseSetup(db_options)
|
||||
asyncio.run(db_setup.init_db())
|
||||
print()
|
||||
|
||||
|
||||
def pytest_unconfigure(config: Config) -> None:
|
||||
logging.info(f"Ending tests: {datetime.utcnow()}")
|
||||
db_setup = TestingDatabaseSetup(options=settings.testing)
|
||||
db_setup = TestingDatabaseSetup(db_options)
|
||||
asyncio.run(db_setup.tear_down_db())
|
||||
|
||||
Reference in New Issue
Block a user