【发布时间】:2016-12-25 14:32:02
【问题描述】:
在我需要在应用程序中查询数据库的任何地方,我都会从这个文件中导入 Session。
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import scoped_session, sessionmaker
db_name = 'analytics'
db_url = 'postgresql+psycopg2://**:**@localhost:5432/{0}'.format(db_name)
Engine = create_engine(db_url, echo=False)
SessionMaker = sessionmaker(bind=Engine, autoflush=False)
Session = scoped_session(SessionMaker)
Base = declarative_base()
我正在编写一些单元测试并且需要模拟 Session 对象,以便每当它被导入我的应用程序时,它都会连接到 unittest 数据库而不是分析数据库。
class FacebookTest(unittest.TestCase):
@classmethod
def setUpClass(self):
"""
create unittest database and insert Premier League 2015-2016 season
"""
con = connect(user='**', host='localhost', password='**', database='postgres')
con.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cur = con.cursor()
cur.execute('DROP DATABASE IF EXISTS unittest')
cur.execute('CREATE DATABASE unittest')
cur.close()
con.close()
Engine = create_engine('postgresql+psycopg2://**:**@localhost:5432/unittest')
Base.metadata.create_all(Engine)
Session.connection = Engine.connect()
【问题讨论】:
-
你有什么问题?
-
如何模拟会话,以便在运行测试时连接到 unittest 数据库。
标签: python session sqlalchemy