Eu me deparei com o mesmo problema SQLite/Postgres com Flask e SQLAlchemy, semelhante ao Gordon Fierce. No entanto, minha solução foi diferente. O Postgres é rigoroso sobre bloqueios e conexões de tabelas, portanto, fechar explicitamente a conexão da sessão na desmontagem resolveu o problema para mim.
Meu código de trabalho:
@pytest.yield_fixture(scope='function')
def db(app):
# app is an instance of a flask app, _db a SQLAlchemy DB
_db.app = app
with app.app_context():
_db.create_all()
yield _db
# Explicitly close DB connection
_db.session.close()
_db.drop_all()
Referência:SQLAlchemy