【发布时间】:2019-08-24 16:57:06
【问题描述】:
我正在使用 Pony ORM 来管理我正在开发的 python 包中的 sqlite 数据库。
我想使用 pytest 进行测试。
我的包提供了一个“代理”对象,用于连接到服务器 API 并检索“事件”。在初始化代理时,小马 orm 被设置并绑定到一个 sqlite db,无论是在内存中(用于测试)还是作为文件。
def setup_db(filepath=None):
if filepath:
db.bind(provider="sqlite", filename=filepath, create_db=True)
else:
db.bind(provider="sqlite", filename=":memory:", create_db=True)
db.provider.converter_classes.append((Enum, EnumConverter))
db.generate_mapping(create_tables=True)
事件的状态使用 pony orm 存储在 sqlite db 中。
我希望创建一个新的代理对象,每个测试都有一个干净的数据库,所以我在 conftest.py 文件中使用了一个 pytest 夹具。
@pytest.fixture
def agent():
agent=Agent(parm1="param1",...)
return agent
我无法从数据库中正确“解除绑定”并在我的第二次测试中出现此错误:
pony.orm.core.BindingError: Database object was already bound to SQLite
provider
我想要一些关于最佳方式的建议。 谢谢。
【问题讨论】: