Протестируйте события сеанса SqlAlchemy с Flask и PyTest - PullRequest
0 голосов
/ 12 февраля 2020

Я использую событие SqlAlchemy before_flush для проверки объектов перед их сохранением в базе данных, например:

from models import db

@event.listens_for(db.session, 'before_flush')
def validateSomething(session, flush_context, instances):
    pass

Я бы очень хотел проверить, что я там делаю. Однако в моих тестах - я использую pytest - для каждого теста создается новый сеанс с использованием прибора. Это похоже на эту настройку: http://alexmic.net/flask-sqlalchemy-pytest/ Приспособление с областью функции создает транзакцию вместе с сеансом и откатывает / удаляет их во время разрыва.

Поскольку событие зарегистрировано в (область действия ) сеанс в models.db, он не срабатывает для событий сеансов, используемых в тестах. Есть ли способ исправить это, чтобы события запускались во время тестов?

1 Ответ

0 голосов
/ 19 февраля 2020

Вместо прослушивания экземпляра сеанса listens_for() позволяет прослушивать события всех экземпляров класса сеанса. Так что замена db.session на SignallingSession сделала свое дело.

...