57 lines
1.2 KiB
Python
57 lines
1.2 KiB
Python
# https://itnext.io/setting-up-transactional-tests-with-pytest-and-sqlalchemy-b2d726347629
|
|
|
|
import pytest
|
|
import sys
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.orm import scoped_session, sessionmaker
|
|
|
|
sys.path.append("app")
|
|
from app.models import Base # noqa E402
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def connection():
|
|
engine = create_engine(
|
|
"mysql+mysqldb://musicmuster_testing:musicmuster_testing@"
|
|
"localhost/musicmuster_testing"
|
|
)
|
|
return engine.connect()
|
|
|
|
|
|
def seed_database():
|
|
pass
|
|
|
|
# users = [
|
|
# {
|
|
# "id": 1,
|
|
# "name": "John Doe",
|
|
# },
|
|
# # ...
|
|
# ]
|
|
|
|
# for user in users:
|
|
# db_user = User(**user)
|
|
# db_session.add(db_user)
|
|
# db_session.commit()
|
|
|
|
|
|
@pytest.fixture(scope="session")
|
|
def setup_database(connection):
|
|
Base.metadata.bind = connection
|
|
Base.metadata.create_all()
|
|
# seed_database()
|
|
|
|
yield
|
|
|
|
models.Base.metadata.drop_all()
|
|
|
|
|
|
@pytest.fixture
|
|
def db_session(setup_database, connection):
|
|
transaction = connection.begin()
|
|
yield scoped_session(
|
|
sessionmaker(autocommit=False, autoflush=False, bind=connection)
|
|
)
|
|
transaction.rollback()
|