get_fixture with fixture instance return instance itself.
Change-Id: Ie1528b941316579f807aa91aac28ed514b1e3a9c
This commit is contained in:
parent
f53d5bb512
commit
b907b1edd2
|
@ -25,6 +25,8 @@ discover_testcases = testcase_manager.discover_testcases
|
||||||
is_fixture = fixture.is_fixture
|
is_fixture = fixture.is_fixture
|
||||||
get_fixture = fixture.get_fixture
|
get_fixture = fixture.get_fixture
|
||||||
get_fixture_name = fixture.get_fixture_name
|
get_fixture_name = fixture.get_fixture_name
|
||||||
|
get_fixture_class = fixture.get_fixture_class
|
||||||
|
get_fixture_dir = fixture.get_fixture_dir
|
||||||
remove_fixture = fixture.remove_fixture
|
remove_fixture = fixture.remove_fixture
|
||||||
setup_fixture = fixture.setup_fixture
|
setup_fixture = fixture.setup_fixture
|
||||||
cleanup_fixture = fixture.cleanup_fixture
|
cleanup_fixture = fixture.cleanup_fixture
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import os
|
||||||
import inspect
|
import inspect
|
||||||
|
|
||||||
import fixtures
|
import fixtures
|
||||||
|
@ -31,12 +32,37 @@ def is_fixture(obj):
|
||||||
|
|
||||||
|
|
||||||
def get_fixture(obj, manager=None):
|
def get_fixture(obj, manager=None):
|
||||||
manager = manager or FIXTURES
|
if isinstance(obj, fixtures.Fixture):
|
||||||
return manager.get_fixture(obj)
|
return obj
|
||||||
|
else:
|
||||||
|
manager = manager or FIXTURES
|
||||||
|
return manager.get_fixture(obj)
|
||||||
|
|
||||||
|
|
||||||
def get_fixture_name(obj):
|
def get_fixture_name(obj):
|
||||||
return get_fixture(obj).__tobiko_fixture_name__
|
try:
|
||||||
|
return obj.__tobiko_fixture_name__
|
||||||
|
except AttributeError:
|
||||||
|
name = get_object_name(obj)
|
||||||
|
if is_fixture(obj):
|
||||||
|
obj.__tobiko_fixture__ = True
|
||||||
|
obj.__tobiko_fixture_name__ = name
|
||||||
|
return name
|
||||||
|
|
||||||
|
|
||||||
|
def get_fixture_class(obj):
|
||||||
|
if isinstance(obj, six.string_types):
|
||||||
|
obj = tobiko.load_object(obj)
|
||||||
|
|
||||||
|
if not inspect.isclass(obj):
|
||||||
|
obj = type(obj)
|
||||||
|
|
||||||
|
assert issubclass(obj, fixtures.Fixture)
|
||||||
|
return obj
|
||||||
|
|
||||||
|
|
||||||
|
def get_fixture_dir(obj):
|
||||||
|
return os.path.dirname(inspect.getfile(get_fixture_class(obj)))
|
||||||
|
|
||||||
|
|
||||||
def remove_fixture(obj, manager=None):
|
def remove_fixture(obj, manager=None):
|
||||||
|
@ -46,14 +72,14 @@ def remove_fixture(obj, manager=None):
|
||||||
|
|
||||||
def setup_fixture(obj, manager=None):
|
def setup_fixture(obj, manager=None):
|
||||||
fixture = get_fixture(obj, manager=manager)
|
fixture = get_fixture(obj, manager=manager)
|
||||||
LOG.debug('Set up fixture %r', fixture.__tobiko_fixture_name__)
|
LOG.debug('Set up fixture %r', get_fixture_name(fixture))
|
||||||
fixture.setUp()
|
fixture.setUp()
|
||||||
return fixture
|
return fixture
|
||||||
|
|
||||||
|
|
||||||
def cleanup_fixture(obj, manager=None):
|
def cleanup_fixture(obj, manager=None):
|
||||||
fixture = get_fixture(obj, manager=manager)
|
fixture = get_fixture(obj, manager=manager)
|
||||||
LOG.debug('Clean up fixture %r', fixture.__tobiko_fixture_name__)
|
LOG.debug('Clean up fixture %r', get_fixture_name(fixture))
|
||||||
fixture.cleanUp()
|
fixture.cleanUp()
|
||||||
return fixture
|
return fixture
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ from __future__ import absolute_import
|
||||||
|
|
||||||
import abc
|
import abc
|
||||||
|
|
||||||
import fixtures
|
|
||||||
from oslo_log import log
|
from oslo_log import log
|
||||||
|
|
||||||
import tobiko
|
import tobiko
|
||||||
|
@ -46,10 +45,7 @@ class OpenstackClientFixture(tobiko.SharedFixture):
|
||||||
def setup_session(self):
|
def setup_session(self):
|
||||||
session_fixture = self.session_fixture
|
session_fixture = self.session_fixture
|
||||||
if session_fixture:
|
if session_fixture:
|
||||||
if not isinstance(session_fixture, fixtures.Fixture):
|
self.session = tobiko.setup_fixture(session_fixture).session
|
||||||
session_fixture = tobiko.get_fixture(session_fixture)
|
|
||||||
session_fixture.setUp()
|
|
||||||
self.session = session_fixture.session
|
|
||||||
elif not self.session:
|
elif not self.session:
|
||||||
self.session = keystone.get_keystone_session()
|
self.session = keystone.get_keystone_session()
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
# under the License.
|
# under the License.
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
|
import fixtures
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
import tobiko
|
import tobiko
|
||||||
|
@ -48,7 +49,13 @@ class FixtureManagerTest(unit.TobikoUnitTest):
|
||||||
fixture = tobiko.get_fixture(obj)
|
fixture = tobiko.get_fixture(obj)
|
||||||
self.assertIsInstance(fixture, fixture_type)
|
self.assertIsInstance(fixture, fixture_type)
|
||||||
self.assertIs(fixture, tobiko.get_fixture(obj))
|
self.assertIs(fixture, tobiko.get_fixture(obj))
|
||||||
self.assertIs(fixture, tobiko.get_fixture(MY_FIXTURE_NAME))
|
if isinstance(obj, fixtures.Fixture):
|
||||||
|
self.assertIs(obj, fixture)
|
||||||
|
else:
|
||||||
|
self.assertIs(fixture, tobiko.get_fixture(MY_FIXTURE_NAME))
|
||||||
|
|
||||||
|
def test_get_fixture_by_instance(self):
|
||||||
|
self._test_get_fixture(MyFixture(), fixture_type=MyFixture)
|
||||||
|
|
||||||
def test_remove_fixture_by_name(self):
|
def test_remove_fixture_by_name(self):
|
||||||
self._test_remove_fixture(MY_FIXTURE_NAME)
|
self._test_remove_fixture(MY_FIXTURE_NAME)
|
||||||
|
@ -75,9 +82,12 @@ class FixtureManagerTest(unit.TobikoUnitTest):
|
||||||
def test_setup_fixture_by_type(self):
|
def test_setup_fixture_by_type(self):
|
||||||
self._test_setup_fixture(MyFixture)
|
self._test_setup_fixture(MyFixture)
|
||||||
|
|
||||||
|
def test_setup_fixture_by_instance(self):
|
||||||
|
self._test_setup_fixture(MyFixture())
|
||||||
|
|
||||||
def _test_setup_fixture(self, obj):
|
def _test_setup_fixture(self, obj):
|
||||||
result = tobiko.setup_fixture(obj)
|
result = tobiko.setup_fixture(obj)
|
||||||
self.assertIs(tobiko.get_fixture(MY_FIXTURE_NAME), result)
|
self.assertIs(tobiko.get_fixture(obj), result)
|
||||||
result.setup_fixture.assert_called_once_with()
|
result.setup_fixture.assert_called_once_with()
|
||||||
|
|
||||||
def test_cleanup_fixture_by_name(self):
|
def test_cleanup_fixture_by_name(self):
|
||||||
|
@ -86,9 +96,12 @@ class FixtureManagerTest(unit.TobikoUnitTest):
|
||||||
def test_cleanup_fixture_by_type(self):
|
def test_cleanup_fixture_by_type(self):
|
||||||
self._test_cleanup_fixture(MyFixture)
|
self._test_cleanup_fixture(MyFixture)
|
||||||
|
|
||||||
|
def test_cleanup_fixture_by_instance(self):
|
||||||
|
self._test_cleanup_fixture(MyFixture())
|
||||||
|
|
||||||
def _test_cleanup_fixture(self, obj):
|
def _test_cleanup_fixture(self, obj):
|
||||||
result = tobiko.cleanup_fixture(obj)
|
result = tobiko.cleanup_fixture(obj)
|
||||||
self.assertIs(tobiko.get_fixture(MY_FIXTURE_NAME), result)
|
self.assertIs(tobiko.get_fixture(obj), result)
|
||||||
result.cleanup_fixture.assert_called_once_with()
|
result.cleanup_fixture.assert_called_once_with()
|
||||||
|
|
||||||
def test_list_required_fixtures_from_module(self):
|
def test_list_required_fixtures_from_module(self):
|
||||||
|
|
Loading…
Reference in New Issue