Fix telemetry-tempest-plugin scenario tests
If we run tests via tempest, gabbi return dictionary with unicode objects
(https://github.com/openstack/telemetry-tempest-plugin/blob/05b95d28400f82a9e69c7c99207844b80ae3607f/telemetry_tempest_plugin/scenario/test_telemetry_integration.py#L103),
but then it wait string value
Change-Id: Ibbceb740da2e67e09371622e3d88836c396c1383
Related-PROD: PROD-18307
Co-Authored-By: BubaVV <vmarkov@mirantis.com>
diff --git a/telemetry_tempest_plugin/scenario/test_telemetry_integration.py b/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
index 139e709..32e5aa4 100644
--- a/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
+++ b/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
@@ -11,6 +11,7 @@
# under the License.
import os
+import six
import unittest
from gabbi import runner
@@ -97,10 +98,11 @@
})
with open(os.path.join(TEST_DIR, filename)) as f:
+ suite_dict = self.deunicode(utils.load_yaml(f))
test_suite = suitemaker.test_suite_from_dict(
loader=unittest.defaultTestLoader,
test_base_name="gabbi",
- suite_dict=utils.load_yaml(f),
+ suite_dict=suite_dict,
test_directory=TEST_DIR,
host=None, port=None,
fixture_module=None,
@@ -126,6 +128,17 @@
self.assertTrue(result.wasSuccessful())
+ def deunicode(self, val):
+ if isinstance(val, six.string_types) and not isinstance(val, str):
+ return val.encode('utf-8')
+ if isinstance(val, dict):
+ dictionary = {self.deunicode(key): self.deunicode(val[key])
+ for key in val}
+ return dictionary
+ if isinstance(val, list):
+ return [self.deunicode(x) for x in val]
+ return val
+
def test_maker(name, filename):
def test(self):