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, PROD-18630
Co-Authored-By: BubaVV <vmarkov@mirantis.com>
(cherry picked from commit 6dc992d3a8cfa47dd86adbd5f5ed29dd03795eae)
diff --git a/telemetry_tempest_plugin/scenario/test_telemetry_integration.py b/telemetry_tempest_plugin/scenario/test_telemetry_integration.py
index b908185..72b0633 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="example.com", 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):