import sqlalchemy as sa from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base from sqlalchemy_utils import ( escape_like, sort_query, InstrumentedList, PhoneNumber, PhoneNumberType, merge ) class TestCase(object): def setup_method(self, method): self.engine = create_engine( 'postgres://postgres@localhost/sqlalchemy_utils_test' ) self.Base = declarative_base() self.create_models() self.Base.metadata.create_all(self.engine) Session = sessionmaker(bind=self.engine) self.session = Session() def teardown_method(self, method): self.session.close_all() self.Base.metadata.drop_all(self.engine) self.engine.dispose() def create_models(self): class User(self.Base): __tablename__ = 'user' id = sa.Column(sa.Integer, autoincrement=True, primary_key=True) name = sa.Column(sa.Unicode(255)) phone_number = sa.Column(PhoneNumberType()) class Category(self.Base): __tablename__ = 'category' id = sa.Column(sa.Integer, primary_key=True) name = sa.Column(sa.Unicode(255)) class Article(self.Base): __tablename__ = 'article' id = sa.Column(sa.Integer, primary_key=True) name = sa.Column(sa.Unicode(255)) category_id = sa.Column(sa.Integer, sa.ForeignKey(Category.id)) category = sa.orm.relationship( Category, primaryjoin=category_id == Category.id, backref=sa.orm.backref( 'articles', collection_class=InstrumentedList ) ) self.User = User self.Category = Category self.Article = Article class DatabaseTestCase(object): def create_models(self): pass def setup_method(self, method): self.engine = create_engine( 'sqlite:///' ) #self.engine.echo = True self.Base = declarative_base() self.create_models() self.Base.metadata.create_all(self.engine) Session = sessionmaker(bind=self.engine) self.session = Session() def teardown_method(self, method): self.engine.dispose() self.Base.metadata.drop_all(self.engine) self.session.expunge_all()