Last active
March 10, 2018 16:12
-
-
Save ProvoK/b9488a599914530ab4a5f335bb7cdfd2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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