diff options
author | Roman Podoliaka <rpodolyaka@mirantis.com> | 2016-04-18 11:30:50 +0300 |
---|---|---|
committer | Roman Podoliaka <rpodolyaka@mirantis.com> | 2016-04-18 19:10:31 +0300 |
commit | 30f061d236065d2d2f6af25cfa31811598960411 (patch) | |
tree | 72bf8d0f467b31d6da8849224d680e89627b2273 | |
parent | 7fcaf832b6fbdb3b8982017c391e19c5e3744680 (diff) | |
download | oslo-db-30f061d236065d2d2f6af25cfa31811598960411.tar.gz |
Fix unit tests failures, when psycopg2 is not installed
A few TestConnectionUtils test cases currently fail, when psycopg2 is
not installed, while they do not necessarily need to have the latter.
Mock parts of psycopg2 dialect in SQLAlchemy to make sure psycopg2
module is not imported in tests.
Closes-Bug: #1499216
Change-Id: I92c14f0e29a57e6e3ff4a8a8a1c25bbd16848d9a
-rw-r--r-- | oslo_db/tests/sqlalchemy/test_utils.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/oslo_db/tests/sqlalchemy/test_utils.py b/oslo_db/tests/sqlalchemy/test_utils.py index 17175f3..160f1a3 100644 --- a/oslo_db/tests/sqlalchemy/test_utils.py +++ b/oslo_db/tests/sqlalchemy/test_utils.py @@ -33,6 +33,7 @@ from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.orm import Session from sqlalchemy.sql import select from sqlalchemy.types import UserDefinedType, NullType +from sqlalchemy.dialects.postgresql import psycopg2 from oslo_db import exception from oslo_db.sqlalchemy.compat import utils as compat_utils @@ -700,6 +701,22 @@ class TestConnectionUtils(test_utils.BaseTestCase): self.connect_string = 'postgresql://dude:pass@localhost/test' + # NOTE(rpodolyaka): mock the dialect parts, so that we don't depend + # on psycopg2 (or any other DBAPI implementation) in these tests + + @classmethod + def fake_dbapi(cls): + return mock.MagicMock() + patch_dbapi = mock.patch.object(psycopg2.PGDialect_psycopg2, 'dbapi', + new=fake_dbapi) + patch_dbapi.start() + self.addCleanup(patch_dbapi.stop) + + patch_onconnect = mock.patch.object(psycopg2.PGDialect_psycopg2, + 'on_connect') + patch_onconnect.start() + self.addCleanup(patch_onconnect.stop) + def test_connect_string(self): connect_string = utils.get_connect_string(**self.full_credentials) self.assertEqual(connect_string, self.connect_string) |