diff --git a/novaclient/tests/fixture_data/quotas.py b/novaclient/tests/fixture_data/quotas.py
new file mode 100644
index 000000000..70db079dd
--- /dev/null
+++ b/novaclient/tests/fixture_data/quotas.py
@@ -0,0 +1,87 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+import httpretty
+
+from novaclient.openstack.common import jsonutils
+from novaclient.tests.fixture_data import base
+
+
+class V1(base.Fixture):
+
+    base_url = 'os-quota-sets'
+
+    def setUp(self):
+        super(V1, self).setUp()
+
+        uuid = '97f4c221-bff4-4578-b030-0df4ef119353'
+        uuid2 = '97f4c221bff44578b0300df4ef119353'
+        test_json = jsonutils.dumps({'quota_set': self.test_quota('test')})
+
+        for u in ('test', 'tenant-id', 'tenant-id/defaults',
+                  '%s/defaults' % uuid2):
+            httpretty.register_uri(httpretty.GET, self.url(u),
+                                   body=test_json,
+                                   content_type='application/json')
+
+        quota_json = jsonutils.dumps({'quota_set': self.test_quota(uuid)})
+        httpretty.register_uri(httpretty.PUT, self.url(uuid),
+                               body=quota_json,
+                               content_type='application/json')
+        httpretty.register_uri(httpretty.GET, self.url(uuid),
+                               body=quota_json,
+                               content_type='application/json')
+
+        quota_json2 = jsonutils.dumps({'quota_set': self.test_quota(uuid2)})
+        httpretty.register_uri(httpretty.PUT, self.url(uuid2),
+                               body=quota_json2,
+                               content_type='application/json')
+        httpretty.register_uri(httpretty.GET, self.url(uuid2),
+                               body=quota_json2,
+                               content_type='application/json')
+
+        for u in ('test', uuid2):
+            httpretty.register_uri(httpretty.DELETE, self.url(u), status=202)
+
+    def test_quota(self, tenant_id='test'):
+        return {
+            'tenant_id': tenant_id,
+            'metadata_items': [],
+            'injected_file_content_bytes': 1,
+            'injected_file_path_bytes': 1,
+            'ram': 1,
+            'floating_ips': 1,
+            'instances': 1,
+            'injected_files': 1,
+            'cores': 1,
+            'keypairs': 1,
+            'security_groups': 1,
+            'security_group_rules': 1
+        }
+
+
+class V3(V1):
+
+    def setUp(self):
+        super(V3, self).setUp()
+
+        get_detail = {
+            'quota_set': {
+                'cores': {'reserved': 0, 'in_use': 0, 'limit': 10},
+                'instances': {'reserved': 0, 'in_use': 4, 'limit': 50},
+                'ram': {'reserved': 0, 'in_use': 1024, 'limit': 51200}
+            }
+        }
+
+        httpretty.register_uri(httpretty.GET, self.url('test', 'detail'),
+                               body=jsonutils.dumps(get_detail),
+                               content_type='application/json')
diff --git a/novaclient/tests/v1_1/test_quotas.py b/novaclient/tests/v1_1/test_quotas.py
index 06d7461d3..8ff0d5967 100644
--- a/novaclient/tests/v1_1/test_quotas.py
+++ b/novaclient/tests/v1_1/test_quotas.py
@@ -13,39 +13,37 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from novaclient.tests.fixture_data import client
+from novaclient.tests.fixture_data import quotas as data
 from novaclient.tests import utils
-from novaclient.tests.v1_1 import fakes
 
 
-class QuotaSetsTest(utils.TestCase):
-    def setUp(self):
-        super(QuotaSetsTest, self).setUp()
-        self.cs = self._get_fake_client()
+class QuotaSetsTest(utils.FixturedTestCase):
 
-    def _get_fake_client(self):
-        return fakes.FakeClient()
+    client_fixture_class = client.V1
+    data_fixture_class = data.V1
 
     def test_tenant_quotas_get(self):
         tenant_id = 'test'
         self.cs.quotas.get(tenant_id)
-        self.cs.assert_called('GET', '/os-quota-sets/%s' % tenant_id)
+        self.assert_called('GET', '/os-quota-sets/%s' % tenant_id)
 
     def test_user_quotas_get(self):
         tenant_id = 'test'
         user_id = 'fake_user'
         self.cs.quotas.get(tenant_id, user_id=user_id)
         url = '/os-quota-sets/%s?user_id=%s' % (tenant_id, user_id)
-        self.cs.assert_called('GET', url)
+        self.assert_called('GET', url)
 
     def test_tenant_quotas_defaults(self):
         tenant_id = '97f4c221bff44578b0300df4ef119353'
         self.cs.quotas.defaults(tenant_id)
-        self.cs.assert_called('GET', '/os-quota-sets/%s/defaults' % tenant_id)
+        self.assert_called('GET', '/os-quota-sets/%s/defaults' % tenant_id)
 
     def test_force_update_quota(self):
         q = self.cs.quotas.get('97f4c221bff44578b0300df4ef119353')
         q.update(cores=2, force=True)
-        self.cs.assert_called(
+        self.assert_called(
             'PUT', '/os-quota-sets/97f4c221bff44578b0300df4ef119353',
             {'quota_set': {'force': True,
                            'cores': 2,
@@ -54,11 +52,11 @@ class QuotaSetsTest(utils.TestCase):
     def test_quotas_delete(self):
         tenant_id = 'test'
         self.cs.quotas.delete(tenant_id)
-        self.cs.assert_called('DELETE', '/os-quota-sets/%s' % tenant_id)
+        self.assert_called('DELETE', '/os-quota-sets/%s' % tenant_id)
 
     def test_user_quotas_delete(self):
         tenant_id = 'test'
         user_id = 'fake_user'
         self.cs.quotas.delete(tenant_id, user_id=user_id)
         url = '/os-quota-sets/%s?user_id=%s' % (tenant_id, user_id)
-        self.cs.assert_called('DELETE', url)
+        self.assert_called('DELETE', url)
diff --git a/novaclient/tests/v3/test_quotas.py b/novaclient/tests/v3/test_quotas.py
index 1e4eef19b..53ca3258e 100644
--- a/novaclient/tests/v3/test_quotas.py
+++ b/novaclient/tests/v3/test_quotas.py
@@ -12,22 +12,20 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+from novaclient.tests.fixture_data import client
+from novaclient.tests.fixture_data import quotas as data
 from novaclient.tests.v1_1 import test_quotas
-from novaclient.tests.v3 import fakes
 
 
 class QuotaSetsTest(test_quotas.QuotaSetsTest):
-    def setUp(self):
-        super(QuotaSetsTest, self).setUp()
-        self.cs = self._get_fake_client()
 
-    def _get_fake_client(self):
-        return fakes.FakeClient()
+    client_fixture_class = client.V3
+    data_fixture_class = data.V3
 
     def test_force_update_quota(self):
         q = self.cs.quotas.get('97f4c221bff44578b0300df4ef119353')
         q.update(cores=2, force=True)
-        self.cs.assert_called(
+        self.assert_called(
             'PUT', '/os-quota-sets/97f4c221bff44578b0300df4ef119353',
             {'quota_set': {'force': True,
                            'cores': 2}})
@@ -35,11 +33,11 @@ class QuotaSetsTest(test_quotas.QuotaSetsTest):
     def test_tenant_quotas_get_detail(self):
         tenant_id = 'test'
         self.cs.quotas.get(tenant_id, detail=True)
-        self.cs.assert_called('GET', '/os-quota-sets/%s/detail' % tenant_id)
+        self.assert_called('GET', '/os-quota-sets/%s/detail' % tenant_id)
 
     def test_user_quotas_get_detail(self):
         tenant_id = 'test'
         user_id = 'fake_user'
         self.cs.quotas.get(tenant_id, user_id=user_id, detail=True)
         url = '/os-quota-sets/%s/detail?user_id=%s' % (tenant_id, user_id)
-        self.cs.assert_called('GET', url)
+        self.assert_called('GET', url)