diff --git a/ironic_tempest_plugin/tests/api/admin/base.py b/ironic_tempest_plugin/tests/api/admin/base.py
index 746eea6..8cc8aec 100644
--- a/ironic_tempest_plugin/tests/api/admin/base.py
+++ b/ironic_tempest_plugin/tests/api/admin/base.py
@@ -104,7 +104,7 @@
         cls.power_timeout = CONF.baremetal.power_timeout
         cls.unprovision_timeout = CONF.baremetal.unprovision_timeout
         cls.created_objects = {}
-        for resource in RESOURCE_TYPES:
+        for resource in RESOURCE_TYPES + ['allocation']:
             cls.created_objects[resource] = set()
         cls.deployed_nodes = set()
 
@@ -122,6 +122,14 @@
                 except lib_exc.BadRequest:
                     pass
 
+            # Delete allocations explicitly after unprovisioning instances, but
+            # before deleting nodes.
+            for allocation in cls.created_objects['allocation']:
+                try:
+                    cls.client.delete_allocation(allocation)
+                except lib_exc.NotFound:
+                    pass
+
             for node in cls.created_objects['node']:
                 try:
                     cls.client.update_node(node, instance_uuid=None)
@@ -452,3 +460,15 @@
                         res=resource,
                         uuid=uuid)
         self.assertEqual(expected_link, link)
+
+    @classmethod
+    @creates('allocation')
+    def create_allocation(cls, resource_class, **kwargs):
+        """Wrapper utility for creating test allocations.
+
+        :param resource_class: Resource class to request.
+        :param kwargs: Other fields to pass.
+        :return: A tuple with the server response and the created allocation.
+        """
+        resp, body = cls.client.create_allocation(resource_class, **kwargs)
+        return resp, body
diff --git a/ironic_tempest_plugin/tests/api/admin/test_allocations.py b/ironic_tempest_plugin/tests/api/admin/test_allocations.py
index a6e8e9c..b65c96f 100644
--- a/ironic_tempest_plugin/tests/api/admin/test_allocations.py
+++ b/ironic_tempest_plugin/tests/api/admin/test_allocations.py
@@ -46,7 +46,7 @@
     @decorators.idempotent_id('9203ea28-3c61-4108-8498-22247b654ff6')
     def test_create_show_allocation(self):
         self.assertIsNone(self.node['allocation_uuid'])
-        _, body = self.client.create_allocation(self.resource_class)
+        _, body = self.create_allocation(self.resource_class)
         uuid = body['uuid']
 
         self.assertTrue(uuid)
@@ -74,8 +74,8 @@
         self.client.set_node_traits(node2['uuid'], ['CUSTOM_MEOW'])
         self.provide_node(node2['uuid'])
 
-        _, body = self.client.create_allocation(self.resource_class,
-                                                traits=['CUSTOM_MEOW'])
+        _, body = self.create_allocation(self.resource_class,
+                                         traits=['CUSTOM_MEOW'])
         uuid = body['uuid']
 
         self.assertTrue(uuid)
@@ -97,8 +97,8 @@
                                     name=node_name)
         self.provide_node(node2['uuid'])
 
-        _, body = self.client.create_allocation(self.resource_class,
-                                                candidate_nodes=[node_name])
+        _, body = self.create_allocation(self.resource_class,
+                                         candidate_nodes=[node_name])
         uuid = body['uuid']
 
         self.assertTrue(uuid)
@@ -114,23 +114,21 @@
 
     @decorators.idempotent_id('84eb3c21-4e16-4f33-9551-dce0f8689462')
     def test_delete_allocation(self):
-        _, body = self.client.create_allocation(self.resource_class)
+        _, body = self.create_allocation(self.resource_class)
         self.client.delete_allocation(body['uuid'])
         self.assertRaises(lib_exc.NotFound, self.client.show_allocation,
                           body['uuid'])
 
     @decorators.idempotent_id('5e30452d-ee92-4342-82c1-5eea5e55c937')
     def test_delete_allocation_by_name(self):
-        _, body = self.client.create_allocation(self.resource_class,
-                                                name='banana')
+        _, body = self.create_allocation(self.resource_class, name='banana')
         self.client.delete_allocation('banana')
         self.assertRaises(lib_exc.NotFound, self.client.show_allocation,
                           'banana')
 
     @decorators.idempotent_id('fbbc13bc-86da-438b-af01-d1bc1bab57d6')
     def test_show_by_name(self):
-        _, body = self.client.create_allocation(self.resource_class,
-                                                name='banana')
+        _, body = self.create_allocation(self.resource_class, name='banana')
         _, loaded_body = self.client.show_allocation('banana')
         # The allocation will likely have been processed by this time, so do
         # not compare the whole body.
@@ -139,7 +137,7 @@
 
     @decorators.idempotent_id('4ca123c4-160d-4d8d-a3f7-15feda812263')
     def test_list_allocations(self):
-        _, body = self.client.create_allocation(self.resource_class)
+        _, body = self.create_allocation(self.resource_class)
 
         _, listing = self.client.list_allocations()
         self.assertIn(body['uuid'],
@@ -152,8 +150,8 @@
 
     @decorators.idempotent_id('092b7148-9ff0-4107-be57-2cfcd21eb5d7')
     def test_list_allocations_by_state(self):
-        _, body = self.client.create_allocation(self.resource_class)
-        _, body2 = self.client.create_allocation(self.resource_class + 'foo2')
+        _, body = self.create_allocation(self.resource_class)
+        _, body2 = self.create_allocation(self.resource_class + 'foo2')
 
         waiters.wait_for_allocation(self.client, body['uuid'])
         waiters.wait_for_allocation(self.client, body2['uuid'],
@@ -177,7 +175,7 @@
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('bf7e1375-019a-466a-a294-9c1052827ada')
     def test_create_allocation_resource_class_mismatch(self):
-        _, body = self.client.create_allocation(self.resource_class + 'foo')
+        _, body = self.create_allocation(self.resource_class + 'foo')
 
         _, body = waiters.wait_for_allocation(self.client, body['uuid'],
                                               expect_error=True)
@@ -187,7 +185,7 @@
     @decorators.attr(type=['negative'])
     @decorators.idempotent_id('b4eeddee-ca34-44f9-908b-490b78b18486')
     def test_create_allocation_traits_mismatch(self):
-        _, body = self.client.create_allocation(
+        _, body = self.create_allocation(
             self.resource_class, traits=['CUSTOM_DOES_NOT_EXIST'])
 
         _, body = waiters.wait_for_allocation(self.client, body['uuid'],
@@ -201,7 +199,7 @@
         _, node2 = self.create_node(self.chassis['uuid'],
                                     resource_class=self.resource_class + 'alt')
         # Mismatch between the resource class and the candidate node
-        _, body = self.client.create_allocation(
+        _, body = self.create_allocation(
             self.resource_class, candidate_nodes=[node2['uuid']])
 
         _, body = waiters.wait_for_allocation(self.client, body['uuid'],
