musicmuster/conftest.py
2023-10-23 17:39:56 +01:00

48 lines
1.2 KiB
Python

# https://itnext.io/setting-up-transactional-tests-with-pytest-and-sqlalchemy-b2d726347629
import pytest
import helpers
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from app.models import Base, Tracks
@pytest.fixture(scope="session")
def db_engine():
engine = create_engine(
"mysql+mysqldb://musicmuster_testing:musicmuster_testing@localhost/dev_musicmuster_testing"
)
Base.metadata.create_all(engine)
yield engine
engine.dispose()
@pytest.fixture(scope='function')
def session(db_engine):
connection = db_engine.connect()
transaction = connection.begin()
Session = sessionmaker(bind=connection)
session = scoped_session(Session)
yield session
session.remove()
transaction.rollback()
connection.close()
@pytest.fixture(scope='function')
def track1(session):
track_path = "testdata/isa.mp3"
metadata = helpers.get_file_metadata(track_path)
track = Tracks(session, **metadata)
return track
@pytest.fixture(scope='function')
def track2(session):
track_path = "testdata/mom.mp3"
metadata = helpers.get_file_metadata(track_path)
track = Tracks(session, **metadata)
return track