From 0cdaa7f43393e9ad759bb56d7edec890e80a580e Mon Sep 17 00:00:00 2001 From: debugtalk Date: Wed, 27 May 2020 21:27:09 +0800 Subject: [PATCH] fix: compatibility with v2, headers.Content-Type --- httprunner/compat.py | 11 ++++++++++- httprunner/compat_test.py | 22 ++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 httprunner/compat_test.py diff --git a/httprunner/compat.py b/httprunner/compat.py index 42ccade4..1367079a 100644 --- a/httprunner/compat.py +++ b/httprunner/compat.py @@ -6,12 +6,21 @@ from typing import List, Dict, Text def convert_jmespath(raw: Text) -> Text: + # content.xx/json.xx => body.xx if raw.startswith("content"): return f"body{raw[len('content'):]}" elif raw.startswith("json"): return f"body{raw[len('json'):]}" - return raw + # add quotes for field with separator, e.g. headers.Content-Type + raw_list = [] + for item in raw.split("."): + if "-" in item: + raw_list.append(f'"{item}"') + else: + raw_list.append(item) + + return ".".join(raw_list) def convert_extractors(extractors: List) -> Dict: diff --git a/httprunner/compat_test.py b/httprunner/compat_test.py new file mode 100644 index 00000000..f7b7c72d --- /dev/null +++ b/httprunner/compat_test.py @@ -0,0 +1,22 @@ +import os +import unittest + +from httprunner import compat + + +class TestCompat(unittest.TestCase): + + def test_convert_jmespath(self): + + self.assertEqual( + compat.convert_jmespath("content.abc"), + "body.abc" + ) + self.assertEqual( + compat.convert_jmespath("json.abc"), + "body.abc" + ) + self.assertEqual( + compat.convert_jmespath("headers.Content-Type"), + 'headers."Content-Type"' + )