Я работаю, чтобы перенести более старую кодовую базу с SQLalchemy 1,3 до 2.0. Я успешно перешел на 1,4, но у меня возникают проблемы с набором тестирования. Тесты используют Postgres SavePoints и MonkeApatching Session.commit => session.flush , чтобы добавить два вложенных слоя изоляции:
Тесты на корне. Тем не менее, находятся в вложенных транзакциях с некоторыми обезболенными по обезболиванию, которые предотвращает закрытие внешней транзакции (FWIW Package_Session Логика в основном идентична сессии на уровне корня , за исключением обезьянного матча):
@pytest.fixture(scope="package")
def package_session(test_engine: Engine, monkeypatch_package) -> Session:
# Create a nested transaction that includes standard module data
connection = test_engine.connect()
transaction = connection.begin()
session = Session(bind=connection)
# Overwrite commits with flushes so that we can query stuff, but it's in the same transaction
monkeypatch_package.setattr(session, "commit", session.flush)
# Create our data that is shared by the tests in this module
_create_data_for_test(session)
try:
yield session
finally:
transaction.rollback()
connection.close()
@pytest.fixture(scope="function")
def session(package_session):
"""Return a nested transaction on the outer session, to prevent rolling back shared data"""
package_session.begin_nested()
try:
yield package_session
finally:
package_session.rollback()
< /code>
< /li>
< /ul>
в рамках Sqlalchemy 1.4 Это работает, но при обновлении до 2.0, тестовый набор усеян ошибками по поводу пропущенных общих данных (без низкоуровневых ошибок Sqlalchem Подумал, что я спрошу: разве этот шаблон просто невозможна в 2.0? Я мог бы заполнить общие данные в сессии «Функция», если бы мне пришлось (просто замедлите тестовый набор вниз), но я подумал, что спрошу, смогу ли кто -нибудь заметить что -то очевидное, что я делаю не так, так как мне понравился шаблон ниже 1,3/1,4.
Подробнее здесь: https://stackoverflow.com/questions/797 ... via-postgr
Использование транзакций с базой данных SQLALCHEMY 2.0 к модулям PytEST через Postgres ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Использование транзакций с базой данных SQLALCHEMY 2.0 к модулям PytEST через Postgres
Anonymous » » в форуме Python - 0 Ответы
- 8 Просмотры
-
Последнее сообщение Anonymous
-