diff options
Diffstat (limited to 'test/orm/_base.py')
| -rw-r--r-- | test/orm/_base.py | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/test/orm/_base.py b/test/orm/_base.py index 8d695e912..f08d253d5 100644 --- a/test/orm/_base.py +++ b/test/orm/_base.py @@ -1,10 +1,11 @@ -import gc import inspect import sys import types import sqlalchemy as sa +import sqlalchemy.exceptions as sa_exc from sqlalchemy.test import config, testing from sqlalchemy.test.testing import resolve_artifact_names, adict +from sqlalchemy.test.engines import drop_all_tables from sqlalchemy.util import function_named @@ -74,20 +75,19 @@ class ComparableEntity(BasicEntity): if attr.startswith('_'): continue value = getattr(a, attr) - if (hasattr(value, '__iter__') and - not isinstance(value, basestring)): - try: - # catch AttributeError so that lazy loaders trigger - battr = getattr(b, attr) - except AttributeError: - return False + try: + # handle lazy loader errors + battr = getattr(b, attr) + except (AttributeError, sa_exc.UnboundExecutionError): + return False + + if hasattr(value, '__iter__'): if list(value) != list(battr): return False else: - if value is not None: - if value != getattr(b, attr, None): - return False + if value is not None and value != battr: + return False return True finally: _recursion_stack.remove(id(self)) @@ -173,7 +173,7 @@ class MappedTest(ORMTest): def setup(self): if self.run_define_tables == 'each': self.tables.clear() - self.metadata.drop_all() + drop_all_tables(self.metadata) self.metadata.clear() self.define_tables(self.metadata) self.metadata.create_all() @@ -217,7 +217,7 @@ class MappedTest(ORMTest): for cl in cls.classes.values(): cls.unregister_class(cl) ORMTest.teardown_class() - cls.metadata.drop_all() + drop_all_tables(cls.metadata) cls.metadata.bind = None @classmethod |
