change: convert lst.0.name to lst[0].name

This commit is contained in:
debugtalk
2020-05-29 11:16:43 +08:00
parent 0b8d2b1471
commit 45a5f1c37c
3 changed files with 14 additions and 6 deletions

View File

@@ -24,12 +24,18 @@ def convert_jmespath(raw: Text) -> Text:
raw_list.append(f'"{item}"')
elif item.isdigit():
# convert lst.0.name to lst[0].name
raw_list.append(f"[{item}]")
if len(raw_list) == 0:
raise exceptions.FileFormatError(
f"Invalid jmespath: {raw}, jmespath should startswith headers/body/status_code/cookies"
)
last_item = raw_list.pop()
item = f"{last_item}[{item}]"
raw_list.append(item)
else:
raw_list.append(item)
# lst.[0].name => lst[0].name
return ".".join(raw_list).replace(".[", "[")
return ".".join(raw_list)
def convert_extractors(extractors: Union[List, Dict]) -> Dict:

View File

@@ -40,11 +40,11 @@ class FileFormatError(MyBaseError):
pass
class TestCaseFormatError(MyBaseError):
class TestCaseFormatError(FileFormatError):
pass
class TestSuiteFormatError(MyBaseError):
class TestSuiteFormatError(FileFormatError):
pass

View File

@@ -1,6 +1,6 @@
import unittest
from httprunner import compat
from httprunner import compat, exceptions
class TestCompat(unittest.TestCase):
@@ -18,6 +18,8 @@ class TestCompat(unittest.TestCase):
compat.convert_jmespath("body.data.buildings.0.building_id"),
"body.data.buildings[0].building_id",
)
with self.assertRaises(exceptions.FileFormatError):
compat.convert_jmespath("2.buildings.0.building_id")
def test_convert_extractors(self):
self.assertEqual(