mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
refactor handling binds data structure
This commit is contained in:
@@ -68,13 +68,13 @@ class ResponseObject(object):
|
||||
@return (OrderDict) variable binds ordered dict
|
||||
"""
|
||||
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_bind.items():
|
||||
if not isinstance(field, utils.string_type):
|
||||
raise exception.ParamsError("invalid extract_binds in testcase extract_binds!")
|
||||
for key, field in extract_binds_order_dict.items():
|
||||
if not isinstance(field, utils.string_type):
|
||||
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
|
||||
|
||||
|
||||
50
ate/utils.py
50
ate/utils.py
@@ -9,6 +9,7 @@ import random
|
||||
import re
|
||||
import string
|
||||
import types
|
||||
from collections import OrderedDict
|
||||
|
||||
import yaml
|
||||
from ate import exception
|
||||
@@ -309,3 +310,52 @@ def lower_dict_key(origin_dict, depth=1):
|
||||
new_dict[key.lower()] = value
|
||||
|
||||
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("Accept", 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