util.py 496 B

12345678910111213141516171819
  1. from sqlalchemy.util import decorator
  2. @decorator
  3. def provide_metadata(fn, *args, **kw):
  4. """Provide bound MetaData for a single test, dropping afterwards."""
  5. from . import config
  6. from sqlalchemy import schema
  7. metadata = schema.MetaData(config.db)
  8. self = args[0]
  9. prev_meta = getattr(self, 'metadata', None)
  10. self.metadata = metadata
  11. try:
  12. return fn(*args, **kw)
  13. finally:
  14. metadata.drop_all()
  15. self.metadata = prev_meta