diff --git a/designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json b/designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json
deleted file mode 100644
index 100995a..0000000
--- a/designate_tempest_plugin/tests/api/v2/invalid_mx_dataset.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "empty_preference": {"pref": ""},
-  "minus_zero_preference": {"pref": "-0"},
-  "minus_one_preference": {"pref": "-1"}
-}
diff --git a/designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json b/designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json
deleted file mode 100644
index 133b460..0000000
--- a/designate_tempest_plugin/tests/api/v2/invalid_sshfp_dataset.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-  "minus_zero_algorithm": {"algo": "-0", "finger": null},
-  "minus_zero_fingerprint": {"algo": null, "finger": "-0"},
-  "minus_one_algorithm": {"algo": "-1", "finger": null},
-  "minus_one_fingerprint": {"algo": null, "finger": "-1"}
-}
diff --git a/designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json b/designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json
deleted file mode 100644
index 449d90c..0000000
--- a/designate_tempest_plugin/tests/api/v2/invalid_txt_dataset.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "trailing_slash": {"data": "\\"},
-  "trailing_double_slash": {"data": "\\\\"},
-  "trailing_slash_after_text": {"data": "testtext\\"}
-}
diff --git a/designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json b/designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json
deleted file mode 100644
index 413698f..0000000
--- a/designate_tempest_plugin/tests/api/v2/recordset_data_invalid.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-    "CNAME multiple": {
-        "name": "www",
-        "type": "CNAME",
-        "records": ["target1.example.org.", "target2.example.org."]
-    },
-    "CNAME at Apex": {
-        "name": null,
-        "type": "CNAME",
-        "records": ["target1.example.org."]
-    }
-}
diff --git a/designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json b/designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json
deleted file mode 100644
index c56727d..0000000
--- a/designate_tempest_plugin/tests/api/v2/recordset_wildcard_data.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
-    "A at APEX": {
-        "name": "*",
-        "type": "A",
-        "records": ["192.0.2.1", "192.0.2.2", "192.0.2.3"]
-    },
-    "A under APEX": {
-        "name": "*.sub",
-        "type": "A",
-        "records": ["192.0.2.1", "192.0.2.2", "192.0.2.3"]
-    },
-    "AAAA at APEX": {
-        "name": "*",
-        "type": "AAAA",
-        "records": ["2001:db8::1", "2001:db8::1", "2001:db8::"]
-    },
-    "AAAA under APEX": {
-        "name": "*.sub",
-        "type": "AAAA",
-        "records": ["2001:db8::1", "2001:db8::1", "2001:db8::"]
-    },
-    "MX at APEX": {
-        "name": "*",
-        "type": "MX",
-        "records": ["10 mail1.example.org.",
-                    "20 mail2.example.org."]
-    },
-    "MX under APEX": {
-        "name": "*.sub",
-        "type": "MX",
-        "records": ["10 mail.example.org."]
-    },
-    "SPF at APEX": {
-        "name": "*",
-        "type": "SPF",
-        "records": ["\"v=spf1; a -all\""]
-    },
-    "SPF under APEX": {
-        "name": "*.sub",
-        "type": "SPF",
-        "records": ["\"v=spf1; a -all\""]
-    },
-    "TXT at APEX": {
-        "name": "*",
-        "type": "TXT",
-        "records": ["\"Can you read me?\""]
-    },
-    "TXT under APEX": {
-        "name": "*.sub",
-        "type": "TXT",
-        "records": ["\"Can you read me?\""]
-    }
-}
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset.py b/designate_tempest_plugin/tests/api/v2/test_recordset.py
index 2249a68..a7cb4bc 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset.py
@@ -16,7 +16,6 @@
 from tempest.lib import decorators
 from tempest.lib import exceptions as lib_exc
 from tempest.lib.common.utils import data_utils
-import ddt
 
 from designate_tempest_plugin.tests import base
 from designate_tempest_plugin.common import constants as const
@@ -63,7 +62,6 @@
         super(BaseRecordsetsTest, cls).resource_cleanup()
 
 
-@ddt.ddt
 class RecordsetsTest(BaseRecordsetsTest):
 
     credentials = ["admin", "system_admin", "system_reader", "primary", "alt",
@@ -190,9 +188,7 @@
         self._test_create_recordset_type(
             "www", "TXT", ["\"Any Old Text Goes Here\""])
 
-    @decorators.idempotent_id('69f002e5-6511-43d3-abae-7abdd45ae03e')
-    @ddt.file_data("recordset_wildcard_data.json")
-    def test_create_wildcard_recordset(self, name, type, records):
+    def _test_create_wildcard_recordset(self, name, type, records):
         if name is not None:
             recordset_name = name + "." + self.zone['name']
 
@@ -215,6 +211,56 @@
         LOG.info('Ensure we respond with PENDING')
         self.assertEqual(const.PENDING, body['status'])
 
+    @decorators.idempotent_id('69f002e5-6511-43d3-abae-7abdd45ae03e')
+    def test_create_wildcard_recordset_A_at_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*", "A", ["192.0.2.1", "192.0.2.2", "192.0.2.3"])
+
+    @decorators.idempotent_id('d97ee452-0dc3-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_A_under_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*.sub", "A", ["192.0.2.1", "192.0.2.2", "192.0.2.3"])
+
+    @decorators.idempotent_id('1b3c1cc0-0dc4-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_AAAA_at_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*", "AAAA", ["2001:db8::1", "2001:db8::1", "2001:db8::"])
+
+    @decorators.idempotent_id('928e735e-0dc4-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_AAAA_under_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*.sub", "AAAA", ["2001:db8::1", "2001:db8::1", "2001:db8::"])
+
+    @decorators.idempotent_id('d96138f2-0dc4-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_MX_at_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*", "MX", ["10 mail1.example.org.", "20 mail2.example.org."])
+
+    @decorators.idempotent_id('ff273c94-0dc4-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_MX_under_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*.sub", "MX", ["10 mail.example.org."])
+
+    @decorators.idempotent_id('3097f16a-0dc5-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_SPF_at_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*", "SPF", ["\"v=spf1; a -all\""])
+
+    @decorators.idempotent_id('50b3f390-0dc5-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_SPF_under_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*.sub", "SPF", ["\"v=spf1; a -all\""])
+
+    @decorators.idempotent_id('5b73981c-0dc5-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_TXT_at_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*", "TXT", ["\"Can you read me?\""])
+
+    @decorators.idempotent_id('5b73981c-0dc5-11ee-8b75-201e8823901f')
+    def test_create_wildcard_recordset_TXT_under_APEX(self):
+        self._test_create_wildcard_recordset(
+            "*.sub", "TXT", ["\"Can you read me?\""])
+
     @decorators.idempotent_id('5964f730-5546-46e6-9105-5030e9c492b2')
     def test_list_recordsets(self):
         recordset_data = dns_data_utils.rand_recordset_data(
@@ -565,7 +611,6 @@
             lambda: self.client.show_recordset(zone['id'], record['id']))
 
 
-@ddt.ddt
 class RecordsetsNegativeTest(BaseRecordsetsTest):
 
     credentials = ["admin", "system_admin", "primary", "alt"]
@@ -582,9 +627,7 @@
         cls.client = cls.os_primary.dns_v2.RecordsetClient()
         cls.alt_client = cls.os_alt.dns_v2.RecordsetClient()
 
-    @decorators.idempotent_id('98c94f8c-217a-4056-b996-b1f856d0753e')
-    @ddt.file_data("recordset_data_invalid.json")
-    def test_create_recordset_invalid(self, name, type, records):
+    def _test_create_recordset_invalid(self, name, type, records):
         if name is not None:
             recordset_name = name + "." + self.zone['name']
 
@@ -602,6 +645,16 @@
             lambda: self.client.create_recordset(
                 self.zone['id'], recordset_data))
 
+    @decorators.idempotent_id('98c94f8c-217a-4056-b996-b1f856d0753e')
+    def test_create_recordset_invalid_CNAME_multiple(self):
+        self._test_create_recordset_invalid(
+            'www', 'CNAME', ["target1.example.org.", "target2.example.org."])
+
+    @decorators.idempotent_id('43385ce8-0dd3-11ee-8b75-201e8823901f')
+    def test_create_recordset_invalid_CNAME_at_Apex(self):
+        self._test_create_recordset_invalid(
+            None, 'CNAME', ["target1.example.org."])
+
     @decorators.idempotent_id('b6dad57e-5ce9-4fa5-8d66-aebbcd23b4ad')
     def test_get_nonexistent_recordset(self):
         LOG.info('Attempt to get an invalid Recordset')
diff --git a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
index 534e107..e61e7fa 100644
--- a/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
+++ b/designate_tempest_plugin/tests/api/v2/test_recordset_validation.py
@@ -13,7 +13,7 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 """
-import ddt
+from oslo_log import log as logging
 
 from tempest import config
 from tempest.lib import decorators
@@ -25,6 +25,7 @@
 
 
 CONF = config.CONF
+LOG = logging.getLogger(__name__)
 RECORDSETS_DATASET = [
     'A',
     'AAAA',
@@ -35,9 +36,25 @@
     'SSHFP',
     'TXT',
 ]
+INVALID_TXT_DATASET = {
+    "trailing_slash": {"data": "\\"},
+    "trailing_double_slash": {"data": "\\\\"},
+    "trailing_slash_after_text": {"data": "testtext\\"}}
+VALID_TXT_DATASET = {
+    "slash_with_one_trailing_space": {"data": "\"\\ \""},
+    "slash_with_many_trailing_space": {"data": "\"\\    \""},
+    "text_with_slash_and_trailing_space": {"data": "\"the txts    \""}}
+INVALID_MX_DATASET = {
+    "empty_preference": {"pref": ""},
+    "minus_zero_preference": {"pref": "-0"},
+    "minus_one_preference": {"pref": "-1"}}
+INVALID_SSHFP_DATASET = {
+    "minus_zero_algorithm": {"algo": "-0", "finger": None},
+    "minus_zero_fingerprint": {"algo": None, "finger": "-0"},
+    "minus_one_algorithm": {"algo": "-1", "finger": None},
+    "minus_one_fingerprint": {"algo": None, "finger": "-1"}}
 
 
-@ddt.ddt
 class RecordsetValidationTest(base.BaseDnsV2Test):
 
     credentials = ["admin", "primary", "system_admin"]
@@ -88,39 +105,35 @@
         return body
 
     @decorators.idempotent_id('c5ef87e2-cb79-4758-b968-18eef2c251df')
-    @ddt.data(*RECORDSETS_DATASET)
-    def test_create_invalid(self, rtype):
-        data = ["b0rk"]
-
-        for i in data:
-            model = dns_data_utils.make_rand_recordset(
-                self.zone['name'], rtype)
-            model['data'] = i
-
-            self.assertRaisesDns(
-                exceptions.BadRequest, 'invalid_object', 400,
-                self.recordset_client.create_recordset,
-                self.zone['id'], model
-            )
+    def test_create_invalid(self):
+        for rtype in RECORDSETS_DATASET:
+            data = ["b0rk"]
+            for i in data:
+                model = dns_data_utils.make_rand_recordset(
+                    self.zone['name'], rtype)
+                model['data'] = i
+                self.assertRaisesDns(
+                    exceptions.BadRequest, 'invalid_object', 400,
+                    self.recordset_client.create_recordset,
+                    self.zone['id'], model
+                )
 
     @decorators.idempotent_id('1164c826-dceb-4557-9a22-7d65c4a4f5f4')
-    @ddt.data(*RECORDSETS_DATASET)
-    def test_update_invalid(self, rtype):
-        data = ["b0rk"]
-
-        post_model = dns_data_utils.make_rand_recordset(
-            self.zone['name'], rtype)
-        recordset = self.create_recordset(post_model)
-
-        for i in data:
-            model = dns_data_utils.make_rand_recordset(
+    def test_update_invalid(self):
+        for rtype in RECORDSETS_DATASET:
+            data = ["b0rk"]
+            post_model = dns_data_utils.make_rand_recordset(
                 self.zone['name'], rtype)
-            model['data'] = i
-            self.assertRaisesDns(
-                exceptions.BadRequest, 'invalid_object', 400,
-                self.recordset_client.update_recordset,
-                self.zone['id'], recordset['id'], model
-            )
+            recordset = self.create_recordset(post_model)
+            for i in data:
+                model = dns_data_utils.make_rand_recordset(
+                    self.zone['name'], rtype)
+                model['data'] = i
+                self.assertRaisesDns(
+                    exceptions.BadRequest, 'invalid_object', 400,
+                    self.recordset_client.update_recordset,
+                    self.zone['id'], recordset['id'], model
+                )
 
     @decorators.idempotent_id('61da1015-291f-43d1-a1a8-345cff12d201')
     def test_cannot_create_wildcard_NS_recordset(self):
@@ -147,57 +160,68 @@
         )
 
     @decorators.idempotent_id('22a9544b-2382-4ed2-ba12-4dbaedb8e880')
-    @ddt.file_data("invalid_txt_dataset.json")
-    def test_cannot_create_TXT_with(self, data):
-        post_model = dns_data_utils.rand_txt_recordset(self.zone['name'], data)
-        self.assertRaisesDns(
-            exceptions.BadRequest, 'invalid_object', 400,
-            self.recordset_client.create_recordset,
-            self.zone['id'], post_model
-        )
+    def test_cannot_create_TXT_with(self):
+        for key, data in INVALID_TXT_DATASET.items():
+            LOG.info('Tested INVALID_TXT_DATASET: {}'.format(key))
+            post_model = dns_data_utils.rand_txt_recordset(
+                self.zone['name'], data['data'])
+            self.assertRaisesDns(
+                exceptions.BadRequest, 'invalid_object', 400,
+                self.recordset_client.create_recordset,
+                self.zone['id'], post_model
+            )
 
     @decorators.idempotent_id('03e4f811-0c37-4ce2-8b16-662c824f8f18')
-    @ddt.file_data("valid_txt_dataset.json")
-    def test_create_TXT_with(self, data):
-        post_model = dns_data_utils.rand_txt_recordset(self.zone['name'], data)
+    def test_create_TXT_with(self):
+        for key, data in VALID_TXT_DATASET.items():
+            LOG.info('Tested VALID_TXT_DATASET: {}'.format(key))
+        post_model = dns_data_utils.rand_txt_recordset(
+            self.zone['name'], data['data'])
         recordset = self.create_recordset(post_model)
 
         waiters.wait_for_recordset_status(
             self.recordset_client, self.zone['id'], recordset['id'], 'ACTIVE')
 
     @decorators.idempotent_id('775b3db5-ec60-4dd7-85d2-f05a9c544978')
-    @ddt.file_data("valid_txt_dataset.json")
-    def test_create_SPF_with(self, data):
-        post_model = dns_data_utils.rand_spf_recordset(self.zone['name'], data)
-        recordset = self.create_recordset(post_model)
+    def test_create_SPF_with(self):
+        for key, data in VALID_TXT_DATASET.items():
+            LOG.info('Tested VALID_TXT_DATASET: {}'.format(key))
+            post_model = dns_data_utils.rand_spf_recordset(
+                self.zone['name'], data['data'])
+            recordset = self.create_recordset(post_model)
 
-        waiters.wait_for_recordset_status(
-            self.recordset_client, self.zone['id'], recordset['id'], 'ACTIVE')
+            waiters.wait_for_recordset_status(
+                self.recordset_client, self.zone['id'],
+                recordset['id'], 'ACTIVE')
 
     @decorators.idempotent_id('7fa7783f-1624-4122-bfb2-6cfbf7a5b49b')
-    @ddt.file_data("invalid_mx_dataset.json")
-    def test_cannot_create_MX_with(self, pref):
-        post_model = dns_data_utils.rand_mx_recordset(
-            self.zone['name'], pref=pref
-        )
+    def test_cannot_create_MX_with(self):
+        for key, pref in INVALID_MX_DATASET.items():
+            LOG.info('Tested INVALID_MX_DATASET: {}'.format(key))
 
-        self.assertRaisesDns(
-            exceptions.BadRequest, 'invalid_object', 400,
-            self.recordset_client.create_recordset,
-            self.zone['id'], post_model,
-        )
+            post_model = dns_data_utils.rand_mx_recordset(
+                self.zone['name'], pref=pref['pref']
+            )
+
+            self.assertRaisesDns(
+                exceptions.BadRequest, 'invalid_object', 400,
+                self.recordset_client.create_recordset,
+                self.zone['id'], post_model,
+            )
 
     @decorators.idempotent_id('3016f998-4e4a-4712-b15a-4e8dfbc5a60b')
-    @ddt.data("invalid_sshfp_dataset.json")
-    def test_cannot_create_SSHFP_with(self, algo=None, finger=None):
-        post_model = dns_data_utils.rand_sshfp_recordset(
-            zone_name=self.zone['name'],
-            algorithm_number=algo,
-            fingerprint_type=finger,
-        )
+    def test_cannot_create_SSHFP_with(self):
+        for key, data in INVALID_SSHFP_DATASET.items():
+            LOG.info('Tested INVALID_SSHFP_DATASET: {}'.format(key))
 
-        self.assertRaisesDns(
-            exceptions.BadRequest, 'invalid_object', 400,
-            self.recordset_client.create_recordset,
-            self.zone['id'], post_model,
-        )
+            post_model = dns_data_utils.rand_sshfp_recordset(
+                zone_name=self.zone['name'],
+                algorithm_number=data['algo'],
+                fingerprint_type=data['finger'],
+            )
+
+            self.assertRaisesDns(
+                exceptions.BadRequest, 'invalid_object', 400,
+                self.recordset_client.create_recordset,
+                self.zone['id'], post_model,
+            )
diff --git a/designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json b/designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json
deleted file mode 100644
index 3abcf10..0000000
--- a/designate_tempest_plugin/tests/api/v2/valid_txt_dataset.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "slash_with_one_trailing_space": {"data": "\"\\ \""},
-  "slash_with_many_trailing_space": {"data": "\"\\    \""},
-  "text_with_slash_and_trailing_space": {"data": "\"the txts    \""}
-}
diff --git a/designate_tempest_plugin/tests/scenario/v2/recordset_data.json b/designate_tempest_plugin/tests/scenario/v2/recordset_data.json
deleted file mode 100644
index 6dda986..0000000
--- a/designate_tempest_plugin/tests/scenario/v2/recordset_data.json
+++ /dev/null
@@ -1,79 +0,0 @@
-{
-    "A": {
-        "name": "www",
-        "type": "A",
-        "records": ["192.0.2.1", "192.0.2.2", "192.0.2.3"]
-    },
-    "AAAA": {
-        "name": "www",
-        "type": "AAAA",
-        "records": ["2001:db8::1", "2001:db8::1", "2001:db8::"]
-    },
-    "SRV TCP": {
-        "name": "_sip._tcp",
-        "type": "SRV",
-        "records": ["10 60 5060 server1.example.com.",
-                    "20 60 5060 server2.example.com.",
-                    "20 30 5060 server3.example.com."]
-    },
-    "SRV UDP": {
-        "name": "_sip._udp",
-        "type": "SRV",
-        "records": ["10 60 5060 server1.example.com.",
-                    "10 60 5060 server2.example.com.",
-                    "20 30 5060 server3.example.com."]
-    },
-    "CNAME": {
-        "name": "alias-of-target",
-        "type": "CNAME",
-        "records": ["target.example.org."]
-    },
-    "MX at APEX": {
-        "name": null,
-        "type": "MX",
-        "records": ["10 mail1.example.org.",
-                    "20 mail2.example.org."]
-    },
-    "MX under APEX": {
-        "name": "under",
-        "type": "MX",
-        "records": ["10 mail.example.org."]
-    },
-    "SSHFP": {
-        "name": "www",
-        "type": "SSHFP",
-        "records": ["2 1 123456789abcdef67890123456789abcdef67890"]
-    },
-    "TXT": {
-        "name": "www",
-        "type": "TXT",
-        "records": ["\"Any Old Text Goes Here\""]
-    },
-    "SPF": {
-        "name": "*.sub",
-        "type": "SPF",
-        "records": ["\"v=spf1; a -all\""]
-    },
-    "PTR_IPV4": {
-        "name": "PTR_Record_IPV4",
-        "type": "PTR",
-        "records": ["34.216.184.93.in-addr.arpa."]
-    },
-   "PTR_IPV6":{
-       "name":"PTR_Record_IPV6",
-       "type":"PTR",
-       "records":[
-           "6.4.9.1.8.c.5.2.3.9.8.1.8.4.2.0.1.0.0.0.0.2.2.0.0.0.8.2.6.0.6.2.ip6.arpa."
-      ]
-   },
-   "CAA_Record": {
-       "name": "CAA_Record",
-       "type": "CAA",
-       "records": ["0 issue letsencrypt.org"]
-    },
-   "NAPTR_Record": {
-       "name": "NAPTR_Record",
-       "type": "NAPTR",
-       "records": ["0 0 S SIP+D2U !^.*$!sip:customer-service@example.com! _sip._udp.example.com."]
-    }
-}
\ No newline at end of file
diff --git a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
index c830c25..96634e2 100644
--- a/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
+++ b/designate_tempest_plugin/tests/scenario/v2/test_recordsets.py
@@ -12,7 +12,6 @@
 
 import time
 
-import ddt
 from oslo_log import log as logging
 from tempest import config
 from tempest.lib.common.utils import test_utils
@@ -32,7 +31,6 @@
 CONF = config.CONF
 
 
-@ddt.ddt
 class RecordsetsTest(base.BaseDnsV2Test):
 
     credentials = ["admin", "system_admin", "primary"]
@@ -80,11 +78,8 @@
         cls.admin_tld_client.delete_tld(cls.class_tld[1]['id'])
         super(RecordsetsTest, cls).resource_cleanup()
 
-    @decorators.attr(type='slow')
-    @decorators.idempotent_id('4664ed66-9ff1-45f2-9e60-d4913195c505')
-    @ddt.file_data("recordset_data.json")
-    def test_create_and_delete_records_on_existing_zone(self, name,
-                                                        type, records):
+    def _test_create_and_delete_records_on_existing_zone(
+            self, name, type, records):
         if name is not None:
             recordset_name = name + "." + self.zone['name']
 
@@ -125,6 +120,99 @@
                           lambda: self.recordset_client.show_recordset(
                               self.zone['id'], recordset['id']))
 
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('4664ed66-9ff1-45f2-9e60-d4913195c505')
+    def test_create_and_delete_records_on_existing_zone_01_A(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "www", "A", ["192.0.2.1", "192.0.2.2", "192.0.2.3"])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('cecd9f20-0b62-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_02_AAAA(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "www", "AAAA", ["2001:db8::1", "2001:db8::1", "2001:db8::"])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('f5368d7a-0b62-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_03_SRV(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "_sip._tcp", "SRV", ["10 60 5060 server1.example.com.",
+                    "20 60 5060 server2.example.com.",
+                    "20 30 5060 server3.example.com."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('74ff9efc-0b63-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_04_SRV(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "_sip._udp", "SRV", ["10 60 5060 server1.example.com.",
+                    "10 60 5060 server2.example.com.",
+                    "20 30 5060 server3.example.com."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('82a14a2e-0b63-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_05_CNAME(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "alias-of-target", "CNAME", ["target.example.org."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('ae7a295e-0b63-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_06_MX(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            None, "MX", ["10 mail1.example.org.",
+                    "20 mail2.example.org."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('f9aa8512-0b64-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_07_MX(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "under", "MX", ["10 mail.example.org."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('fa6cbd12-0b64-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_08_SSHFP(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "www", "SSHFP", ["2 1 123456789abcdef67890123456789abcdef67890"])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('fa124a1c-0b64-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_09_TXT(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "www", "TXT", ["\"Any Old Text Goes Here\""])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('3e347c28-0b66-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_10_SPF(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "*.sub", "SPF", ["\"v=spf1; a -all\""])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('88f6c2ac-0b66-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_11_PTR(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "PTR_Record_IPV4", "PTR", ["34.216.184.93.in-addr.arpa."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('b9591eea-0b66-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_12_PTR(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "PTR_Record_IPV6", "PTR",
+            ["6.4.9.1.8.c.5.2.3.9.8.1.8.4.2.0.1.0.0.0.0.2.2.0.0.0.8"
+             ".2.6.0.6.2.ip6.arpa."])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('c98cd9b4-0b66-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_13_CAA(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "CAA_Record", "CAA", ["0 issue letsencrypt.org"])
+
+    @decorators.attr(type='slow')
+    @decorators.idempotent_id('f78d6e8c-0b66-11ee-bbcc-201e8823901f')
+    def test_create_and_delete_records_on_existing_zone_14_NAPTR(self):
+        self._test_create_and_delete_records_on_existing_zone(
+            "NAPTR_Record", "NAPTR",
+            ["0 0 S SIP+D2U !^.*$!sip:customer-service@example"
+             ".com! _sip._udp.example.com."])
+
     @testtools.skipUnless(
         config.CONF.dns.nameservers,
         "Config option dns.nameservers is missing or empty")
diff --git a/requirements.txt b/requirements.txt
index 2ba3e1a..497e29e 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,7 +3,6 @@
 # process, which may cause wedges in the gate later.
 
 dnspython>=1.16.0  # http://www.dnspython.org/LICENSE
-ddt>=1.0.1 # MIT
 oslo.serialization>=2.25.0 # Apache-2.0
 oslo.utils>=3.33.0 # Apache-2.0
 testtools>=2.2.0 # MIT
