【发布时间】:2016-08-28 16:17:21
【问题描述】:
model.py
from sqlalchemy.ext.declarative import declarative_base
...
Base = declarative_base()
class Team(Base):
id = Column(String, unique=True, primary_key=True)
name = Column(String, nullable=False)
engine = create_engine('sqlite://')
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
test_app.py
from model import Team, Session, engine
class TestApp(TestCase):
def setUp(self):
self.connection = engine.connect()
self.trans = self.connection.begin()
self.session = Session(bind=self.connection)
def tearDown(self):
self.session.close()
self.trans.rollback()
self.connection.close()
@patch('realtime_bot.rtmbot.RtmBot.start')
def test_app_creates_one_rtmbot(self, mck):
team = Team('1', 't1')
self.session.add(team)
self.session.commit()
app = MyApp()
app.start()
self.assertEqual(len(app.bots), 1)
当我在这个测试中设置调试器时,我可以看到内存中的数据库确实有一个团队实体。
但是一旦 app.start() 启动,数据库又已经是空的了。
MyApp.py
from src.model import Session, Team
class MyApp(object):
def __init__(self, directory):
super(MyApp, self).__init__()
self.bots = []
self.session = Session()
def start(self):
teams = self.session.query(Team).all()
我想这可能与会话有关?但我是从模型中导入的,因此它应该是同一个实例。我有点卡在这里,希望能得到一些帮助。谢谢
【问题讨论】:
标签: python sqlalchemy python-3.5