mirror of
https://github.com/httprunner/httprunner.git
synced 2026-08-28 19:47:14 +08:00
refactor handling binds data structure
This commit is contained in:
+5
-5
@@ -68,13 +68,13 @@ class ResponseObject(object):
|
|||||||
@return (OrderDict) variable binds ordered dict
|
@return (OrderDict) variable binds ordered dict
|
||||||
"""
|
"""
|
||||||
extracted_variables_mapping = OrderedDict()
|
extracted_variables_mapping = OrderedDict()
|
||||||
|
extract_binds_order_dict = utils.convert_to_order_dict(extract_binds)
|
||||||
|
|
||||||
for extract_bind in extract_binds:
|
for key, field in extract_binds_order_dict.items():
|
||||||
for key, field in extract_bind.items():
|
if not isinstance(field, utils.string_type):
|
||||||
if not isinstance(field, utils.string_type):
|
raise exception.ParamsError("invalid extract_binds in testcase extract_binds!")
|
||||||
raise exception.ParamsError("invalid extract_binds in testcase extract_binds!")
|
|
||||||
|
|
||||||
extracted_variables_mapping[key] = self.extract_field(field)
|
extracted_variables_mapping[key] = self.extract_field(field)
|
||||||
|
|
||||||
return extracted_variables_mapping
|
return extracted_variables_mapping
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import random
|
|||||||
import re
|
import re
|
||||||
import string
|
import string
|
||||||
import types
|
import types
|
||||||
|
from collections import OrderedDict
|
||||||
|
|
||||||
import yaml
|
import yaml
|
||||||
from ate import exception
|
from ate import exception
|
||||||
@@ -309,3 +310,52 @@ def lower_dict_key(origin_dict, depth=1):
|
|||||||
new_dict[key.lower()] = value
|
new_dict[key.lower()] = value
|
||||||
|
|
||||||
return new_dict
|
return new_dict
|
||||||
|
|
||||||
|
def convert_to_order_dict(map_list):
|
||||||
|
""" convert mapping in list to ordered dict
|
||||||
|
@param (list) map_list
|
||||||
|
[
|
||||||
|
{"a": 1},
|
||||||
|
{"b": 2}
|
||||||
|
]
|
||||||
|
@return (OrderDict)
|
||||||
|
OrderDict({
|
||||||
|
"a": 1,
|
||||||
|
"b": 2
|
||||||
|
})
|
||||||
|
"""
|
||||||
|
ordered_dict = OrderedDict()
|
||||||
|
for map_dict in map_list:
|
||||||
|
ordered_dict.update(map_dict)
|
||||||
|
|
||||||
|
return ordered_dict
|
||||||
|
|
||||||
|
def update_ordered_dict(ordered_dict, override_mapping):
|
||||||
|
""" override ordered_dict with new mapping
|
||||||
|
@param
|
||||||
|
(OrderDict) ordered_dict
|
||||||
|
OrderDict({
|
||||||
|
"a": 1,
|
||||||
|
"b": 2
|
||||||
|
})
|
||||||
|
(dict) override_mapping
|
||||||
|
{"a": 3, "c": 4}
|
||||||
|
@return (OrderDict)
|
||||||
|
OrderDict({
|
||||||
|
"a": 3,
|
||||||
|
"b": 2,
|
||||||
|
"c": 4
|
||||||
|
})
|
||||||
|
"""
|
||||||
|
for var, value in override_mapping.items():
|
||||||
|
ordered_dict.update({var: value})
|
||||||
|
|
||||||
|
return ordered_dict
|
||||||
|
|
||||||
|
def override_variables_binds(variable_binds, new_mapping):
|
||||||
|
""" convert variable_binds in testcase to ordered mapping, with new_mapping overrided
|
||||||
|
"""
|
||||||
|
return update_ordered_dict(
|
||||||
|
convert_to_order_dict(variable_binds),
|
||||||
|
new_mapping
|
||||||
|
)
|
||||||
|
|||||||
@@ -241,3 +241,33 @@ class TestUtils(ApiServerUnittest):
|
|||||||
self.assertIn("headers", new_dict["request"])
|
self.assertIn("headers", new_dict["request"])
|
||||||
self.assertIn("Accept", new_dict["request"]["headers"])
|
self.assertIn("Accept", new_dict["request"]["headers"])
|
||||||
self.assertIn("User-Agent", new_dict["request"]["headers"])
|
self.assertIn("User-Agent", new_dict["request"]["headers"])
|
||||||
|
|
||||||
|
def test_convert_to_order_dict(self):
|
||||||
|
map_list = [
|
||||||
|
{"a": 1},
|
||||||
|
{"b": 2}
|
||||||
|
]
|
||||||
|
ordered_dict = utils.convert_to_order_dict(map_list)
|
||||||
|
self.assertIsInstance(ordered_dict, dict)
|
||||||
|
self.assertIn("a", ordered_dict)
|
||||||
|
|
||||||
|
def test_update_ordered_dict(self):
|
||||||
|
map_list = [
|
||||||
|
{"a": 1},
|
||||||
|
{"b": 2}
|
||||||
|
]
|
||||||
|
ordered_dict = utils.convert_to_order_dict(map_list)
|
||||||
|
override_mapping = {"a": 3, "c": 4}
|
||||||
|
new_dict = utils.update_ordered_dict(ordered_dict, override_mapping)
|
||||||
|
self.assertEqual(3, new_dict["a"])
|
||||||
|
self.assertEqual(4, new_dict["c"])
|
||||||
|
|
||||||
|
def test_override_variables_binds(self):
|
||||||
|
map_list = [
|
||||||
|
{"a": 1},
|
||||||
|
{"b": 2}
|
||||||
|
]
|
||||||
|
override_mapping = {"a": 3, "c": 4}
|
||||||
|
new_dict = utils.override_variables_binds(map_list, override_mapping)
|
||||||
|
self.assertEqual(3, new_dict["a"])
|
||||||
|
self.assertEqual(4, new_dict["c"])
|
||||||
|
|||||||
Reference in New Issue
Block a user