diff --git a/openstackclient/tests/image/v2/fakes.py b/openstackclient/tests/image/v2/fakes.py
index f90d846d6a..a662a58524 100644
--- a/openstackclient/tests/image/v2/fakes.py
+++ b/openstackclient/tests/image/v2/fakes.py
@@ -18,6 +18,9 @@ import mock
 import random
 import uuid
 
+from glanceclient.v2 import schemas
+import warlock
+
 from openstackclient.common import utils as common_utils
 from openstackclient.tests import fakes
 from openstackclient.tests import utils
@@ -194,7 +197,7 @@ class FakeImage(object):
 
         # Set default attribute
         image_info = {
-            'id': 'image-id' + uuid.uuid4().hex,
+            'id': str(uuid.uuid4()),
             'name': 'image-name' + uuid.uuid4().hex,
             'owner': 'image-owner' + uuid.uuid4().hex,
             'protected': bool(random.choice([0, 1])),
@@ -205,11 +208,13 @@ class FakeImage(object):
         # Overwrite default attributes if there are some attributes set
         image_info.update(attrs)
 
-        image = fakes.FakeResource(
-            None,
-            image_info,
-            loaded=True)
-        return image
+        # Set up the schema
+        model = warlock.model_factory(
+            IMAGE_schema,
+            schemas.SchemaBasedModel,
+        )
+
+        return model(**image_info)
 
     @staticmethod
     def create_images(attrs=None, count=2):
@@ -248,27 +253,6 @@ class FakeImage(object):
 
         return mock.MagicMock(side_effect=images)
 
-    @staticmethod
-    def get_image_info(image=None):
-        """Get the image info from a faked image object.
-
-        :param image:
-            A FakeResource objects faking image
-        :return
-            A dictionary which includes the faked image info as follows:
-            {
-                'id': image_id,
-                'name': image_name,
-                'owner': image_owner,
-                'protected': image_protected,
-                'visibility': image_visibility,
-                'tags': image_tags
-            }
-        """
-        if image is not None:
-            return image._info
-        return {}
-
     @staticmethod
     def get_image_columns(image=None):
         """Get the image columns from a faked image object.
@@ -280,9 +264,8 @@ class FakeImage(object):
             ('id', 'name', 'owner', 'protected', 'visibility', 'tags')
         """
         if image is not None:
-            return tuple(k for k in sorted(
-                FakeImage.get_image_info(image).keys()))
-        return tuple([])
+            return tuple(sorted(image))
+        return IMAGE_columns
 
     @staticmethod
     def get_image_data(image=None):
@@ -296,7 +279,7 @@ class FakeImage(object):
         """
         data_list = []
         if image is not None:
-            for x in sorted(FakeImage.get_image_info(image).keys()):
+            for x in sorted(image.keys()):
                 if x == 'tags':
                     # The 'tags' should be format_list
                     data_list.append(
diff --git a/openstackclient/tests/image/v2/test_image.py b/openstackclient/tests/image/v2/test_image.py
index 33f2533105..beebdef995 100644
--- a/openstackclient/tests/image/v2/test_image.py
+++ b/openstackclient/tests/image/v2/test_image.py
@@ -75,7 +75,8 @@ class TestImageCreate(TestImage):
 
         # This is the return value for utils.find_resource()
         self.images_mock.get.return_value = copy.deepcopy(
-            image_fakes.FakeImage.get_image_info(self.new_image))
+            self.new_image
+        )
         self.images_mock.update.return_value = self.new_image
 
         # Get the command object to test
@@ -492,7 +493,7 @@ class TestImageList(TestImage):
 
         self.api_mock = mock.Mock()
         self.api_mock.image_list.side_effect = [
-            [image_fakes.FakeImage.get_image_info(self._image)], [],
+            [self._image], [],
         ]
         self.app.client_manager.image.api = self.api_mock
 
@@ -632,10 +633,7 @@ class TestImageList(TestImage):
 
     @mock.patch('openstackclient.api.utils.simple_filter')
     def test_image_list_property_option(self, sf_mock):
-        sf_mock.return_value = [
-            copy.deepcopy(
-                image_fakes.FakeImage.get_image_info(self._image)),
-        ]
+        sf_mock.return_value = [copy.deepcopy(self._image)]
 
         arglist = [
             '--property', 'a=1',
@@ -651,7 +649,7 @@ class TestImageList(TestImage):
         columns, data = self.cmd.take_action(parsed_args)
         self.api_mock.image_list.assert_called_with()
         sf_mock.assert_called_with(
-            [image_fakes.FakeImage.get_image_info(self._image)],
+            [self._image],
             attr='a',
             value='1',
             property_field='properties',
@@ -662,10 +660,7 @@ class TestImageList(TestImage):
 
     @mock.patch('openstackclient.common.utils.sort_items')
     def test_image_list_sort_option(self, si_mock):
-        si_mock.return_value = [
-            copy.deepcopy(
-                image_fakes.FakeImage.get_image_info(self._image))
-        ]
+        si_mock.return_value = [copy.deepcopy(self._image)]
 
         arglist = ['--sort', 'name:asc']
         verifylist = [('sort', 'name:asc')]
@@ -677,7 +672,7 @@ class TestImageList(TestImage):
         columns, data = self.cmd.take_action(parsed_args)
         self.api_mock.image_list.assert_called_with()
         si_mock.assert_called_with(
-            [image_fakes.FakeImage.get_image_info(self._image)],
+            [self._image],
             'name:asc'
         )
         self.assertEqual(self.columns, columns)