diff --git a/_modules/runtest/tempest_sections/compute.py b/_modules/runtest/tempest_sections/compute.py
index 3400c12..a31d6fb 100644
--- a/_modules/runtest/tempest_sections/compute.py
+++ b/_modules/runtest/tempest_sections/compute.py
@@ -134,8 +134,11 @@
         keystone_profile_admin = self.runtest_opts.get('keystone_profile_admin', {})
         res = self.authenticated_openstack_module_call(
              nodes[0], 'glanceng.image_list', profile=keystone_profile_admin)[nodes[0]]
-        images = [n['id'] for n in res if n['name'] == image_name]
-
+        try:
+            images = [n['id'] for n in res if n['name'] == image_name]
+        except (ValueError, TypeError, KeyError):
+            raise Exception("Could not get list of images. Got the response:"
+                            " {}".format(res))
         if len(images) != 1:
             raise Exception("Error getting images: {}".format(images))
 
@@ -154,8 +157,11 @@
         keystone_profile_admin = self.runtest_opts.get('keystone_profile_admin', {})
         res = self.authenticated_openstack_module_call(
              nodes[0], 'glanceng.image_list', profile=keystone_profile_admin)[nodes[0]]
-        images = [n['id'] for n in res if n['name'] == image_name]
-
+        try:
+            images = [n['id'] for n in res if n['name'] == image_name]
+        except (ValueError, TypeError, KeyError):
+            raise Exception("Could not get list of images. Got the response:"
+                            " {}".format(res))
         if len(images) != 1:
             raise Exception("Error getting images: {}".format(images))
 
diff --git a/_modules/runtest/tempest_sections/dns.py b/_modules/runtest/tempest_sections/dns.py
index 998f021..eed871e 100644
--- a/_modules/runtest/tempest_sections/dns.py
+++ b/_modules/runtest/tempest_sections/dns.py
@@ -60,9 +60,12 @@
         keystone_profile_admin = self.runtest_opts.get('keystone_profile_admin', {})
         res = self.authenticated_openstack_module_call(
              nodes[0], 'designatev2.zone_list', cloud_name=keystone_profile_admin)[nodes[0]]
-        zones = [n['id'] for n in res['zones'] if n['name'] == zone_name]
-
+        try:
+            zones = [n['id'] for n in res['zones'] if n['name'] == zone_name]
+        except (ValueError, TypeError, KeyError):
+            raise Exception("Could not get list of zones. Got the response:"
+                            " {}".format(res))
         if len(zones) != 1:
-             raise Exception("Error getting zones: {}".format(images))
+             raise Exception("Error getting zones: {}".format(zones))
 
         return zones[0]
diff --git a/_modules/runtest/tempest_sections/network.py b/_modules/runtest/tempest_sections/network.py
index fe06b0d..ec57bcd 100644
--- a/_modules/runtest/tempest_sections/network.py
+++ b/_modules/runtest/tempest_sections/network.py
@@ -119,11 +119,16 @@
             'keystone_profile_admin',
             {}
         )
-        res = self.authenticated_openstack_module_call(
+        resp = self.authenticated_openstack_module_call(
             nodes[0],
             'neutronng.list_networks',
             profile=keystone_profile_admin
-        )[nodes[0]]['networks']
+        )[nodes[0]]
+        try:
+            res = resp['networks']
+        except (ValueError, TypeError, KeyError):
+            raise Exception("Could not get list of networks. Got the response:"
+                            " {}".format(resp))
         networks = [n['id'] for n in res if n['name'] == network_name]
 
         if len(networks) != 1:
diff --git a/_modules/runtest/tempest_sections/network_feature_enabled.py b/_modules/runtest/tempest_sections/network_feature_enabled.py
index 8a2d213..41003a0 100644
--- a/_modules/runtest/tempest_sections/network_feature_enabled.py
+++ b/_modules/runtest/tempest_sections/network_feature_enabled.py
@@ -27,9 +27,14 @@
             return
         keystone_profile_admin = self.runtest_opts.get(
             'keystone_profile_admin', {})
-        res = self.authenticated_openstack_module_call(
+        resp = self.authenticated_openstack_module_call(
             nodes[0], 'neutronng.list_extensions',
-            profile=keystone_profile_admin)[nodes[0]].get('extensions')
+            profile=keystone_profile_admin)[nodes[0]]
+        try:
+            res = resp.get('extensions')
+        except AttributeError:
+            raise Exception(
+                "Could not get API extensions. Got the response: {}".format(resp))
         if res:
             extensions = ', '.join([i['alias'] for i in res])
             return extensions
diff --git a/_modules/runtest/tempest_sections/validation.py b/_modules/runtest/tempest_sections/validation.py
index 541243e..f418e1f 100644
--- a/_modules/runtest/tempest_sections/validation.py
+++ b/_modules/runtest/tempest_sections/validation.py
@@ -37,8 +37,13 @@
         nodes = self.get_nodes_where_condition_match(c)
 
         keystone_profile_admin = self.runtest_opts.get('keystone_profile_admin', {})
-        res = self.authenticated_openstack_module_call(
-            nodes[0], 'neutronng.list_networks', profile=keystone_profile_admin)[nodes[0]]['networks']
+        resp = self.authenticated_openstack_module_call(
+            nodes[0], 'neutronng.list_networks', profile=keystone_profile_admin)[nodes[0]]
+        try:
+            res = resp['networks']
+        except (TypeError, ValueError, KeyError):
+            raise Exception(
+                "Could not get list of networks. Got the response: {}".format(resp))
         external_routers = [net['router:external'] for net in res]
 
         if True in external_routers:
