Me encontré con el mismo problema de SQLite/Postgres con Flask y SQLAlchemy, similar a Gordon Fierce. Sin embargo, mi solución fue diferente. Postgres es estricto con los bloqueos de tablas y las conexiones, por lo que cerrar explícitamente la conexión de la sesión en el desmontaje resolvió el problema para mí.
Mi código de trabajo:
@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()
Referencia:SQLAlchemy