创建两种类型的数据库会话。一份用于测试,一份用于其他用途

问题描述 投票:0回答:1

我只是有一个问题,如何创建 2 种类型的会话装置来使用 SQLAlchemy 连接到数据库。

@pytest.fixture
def session_function_scope():
    engine = create_engine('sqlite:///:memory:'
    Session = sessionmaker(bind=engine)
    session = Session
    yield session
    session.close()

@pytest.fixture(scope='session')
def session_session_scope():
    engine = create_engine('sqlite:///:memory:'
    Session = sessionmaker(bind=engine)
    session = Session
    yield session
    session.close()

这是我的解决方案。在数据库的功能和单元测试下,我们将使用函数范围,而对于其他用途,我们将使用会话范围。但如果我使用这种方法,我们将会有重复的代码。你有什么办法解决这个问题吗?

谢谢你

python sqlalchemy database-testing
1个回答
0
投票

为什么不使用单个会话?最好使用函数作用域来确保每个测试用例都使用一个新会话。这样,不同测试相互影响的可能性就会降低。我还没有看到任何您可能需要创建单个会话来进行测试运行的情况。

© www.soinside.com 2019 - 2024. All rights reserved.