这可能非常简单,但仍然使用 sqlalchemy 并且似乎找不到答案。我有一个基本模块 sometable.py
import config
class SomeTable(config.Base):
__tablename__ = 'bla'
def __init__(self, name):
self.name = name
现在,我想在这个模块上写一个测试:基本上添加几个测试行,使用 SomeTable 的其他函数进行一些计算,然后检查结果。但我不想在我的主数据库中进行这些操作。如何将不同的 Base 对象传递给 sometable 模块中定义的类?还是有更好的方法来实现这一目标?
例如,我的 test_sometable.py 目前看起来像这样:
import sometable, config
class TestSomeTable(unittest.TestCase):
def setUp(self):
engine = create_engine('sqlite:///:memory:')
self.Base = declarative_base(config.Base.metadata, engine)
def test_some_functionality(self):
tbl = sometable.SomeTable('name1')
# if i create a session and add a row here,
# it will add it to my main database, rather than the in-memory one