Skip to content

Instantly share code, notes, and snippets.

@ProvoK
Last active March 10, 2018 16:12
Show Gist options
  • Save ProvoK/b9488a599914530ab4a5f335bb7cdfd2 to your computer and use it in GitHub Desktop.
Save ProvoK/b9488a599914530ab4a5f335bb7cdfd2 to your computer and use it in GitHub Desktop.
import pytest
import factory
from sqlalchemy import create_engine, Column, String, BigInteger
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
engine = create_engine('DB_CONNECTION_URL')
Base = declarative_base(bind=engine)
Session = sessionmaker()
class UserModel(Base):
__tablename__ = 'account'
id = Column(BigInteger, primary_key=True)
name = Column(String, nullable=False)
email = Column(String, nullable=False)
class UserFactory(factory.alchemy.SQLAlchemyModelFactory):
id = factory.Sequence(lambda n: '%s' % n)
name = factory.Faker('name')
email = factory.Faker('email')
class Meta:
model = UserModel
@pytest.fixture(scope='module')
def connection():
connection = engine.connect()
yield connection
connection.close()
@pytest.fixture(scope='function')
def session(connection):
transaction = connection.begin()
session = Session(bind=connection)
UserFactory._meta.sqlalchemy_session = session
yield session
session.close()
transaction.rollback()
def my_func_to_delete_user(session, user_id):
session.query(UserModel).filter(UserModel.id == user_id).delete()
def test_case(session):
user = UserFactory.create()
assert session.query(UserModel).one()
my_func_to_delete_user(session, user.id)
result = session.query(UserModel).one_or_none()
assert result is None
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment