mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-09 01:39:39 +08:00
Merge pull request #375 from HttpRunner/bugfix
fix #373: do not lower request headers
This commit is contained in:
@@ -27,7 +27,7 @@ class Runner(object):
|
|||||||
self.testcase_teardown_hooks = config_dict.pop("teardown_hooks", [])
|
self.testcase_teardown_hooks = config_dict.pop("teardown_hooks", [])
|
||||||
|
|
||||||
self.context = Context(config_variables, config_functions)
|
self.context = Context(config_variables, config_functions)
|
||||||
self.init_config(config_dict, "testcase")
|
self.init_test(config_dict, "testcase")
|
||||||
|
|
||||||
if testcase_setup_hooks:
|
if testcase_setup_hooks:
|
||||||
self.do_hook_actions(testcase_setup_hooks)
|
self.do_hook_actions(testcase_setup_hooks)
|
||||||
@@ -36,11 +36,11 @@ class Runner(object):
|
|||||||
if self.testcase_teardown_hooks:
|
if self.testcase_teardown_hooks:
|
||||||
self.do_hook_actions(self.testcase_teardown_hooks)
|
self.do_hook_actions(self.testcase_teardown_hooks)
|
||||||
|
|
||||||
def init_config(self, config_dict, level):
|
def init_test(self, test_dict, level):
|
||||||
""" create/update context variables binds
|
""" create/update context variables binds
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
config_dict (dict):
|
test_dict (dict):
|
||||||
level (enum): "testcase" or "teststep"
|
level (enum): "testcase" or "teststep"
|
||||||
testcase:
|
testcase:
|
||||||
{
|
{
|
||||||
@@ -73,15 +73,14 @@ class Runner(object):
|
|||||||
dict: parsed request dict
|
dict: parsed request dict
|
||||||
|
|
||||||
"""
|
"""
|
||||||
# convert keys in request headers to lowercase
|
test_dict = utils.lower_test_dict_keys(test_dict)
|
||||||
config_dict = utils.lower_config_dict_key(config_dict)
|
|
||||||
|
|
||||||
self.context.init_context_variables(level)
|
self.context.init_context_variables(level)
|
||||||
variables = config_dict.get('variables') \
|
variables = test_dict.get('variables') \
|
||||||
or config_dict.get('variable_binds', OrderedDict())
|
or test_dict.get('variable_binds', OrderedDict())
|
||||||
self.context.update_context_variables(variables, level)
|
self.context.update_context_variables(variables, level)
|
||||||
|
|
||||||
request_config = config_dict.get('request', {})
|
request_config = test_dict.get('request', {})
|
||||||
parsed_request = self.context.get_parsed_request(request_config, level)
|
parsed_request = self.context.get_parsed_request(request_config, level)
|
||||||
|
|
||||||
base_url = parsed_request.pop("base_url", None)
|
base_url = parsed_request.pop("base_url", None)
|
||||||
@@ -165,7 +164,7 @@ class Runner(object):
|
|||||||
# prepare
|
# prepare
|
||||||
extractors = teststep_dict.get("extract", []) or teststep_dict.get("extractors", [])
|
extractors = teststep_dict.get("extract", []) or teststep_dict.get("extractors", [])
|
||||||
validators = teststep_dict.get("validate", []) or teststep_dict.get("validators", [])
|
validators = teststep_dict.get("validate", []) or teststep_dict.get("validators", [])
|
||||||
parsed_request = self.init_config(teststep_dict, level="teststep")
|
parsed_request = self.init_test(teststep_dict, level="teststep")
|
||||||
self.context.update_teststep_variables_mapping("request", parsed_request)
|
self.context.update_teststep_variables_mapping("request", parsed_request)
|
||||||
|
|
||||||
# setup hooks
|
# setup hooks
|
||||||
|
|||||||
@@ -127,9 +127,32 @@ def deep_update_dict(origin_dict, override_dict):
|
|||||||
|
|
||||||
def lower_dict_keys(origin_dict):
|
def lower_dict_keys(origin_dict):
|
||||||
""" convert keys in dict to lower case
|
""" convert keys in dict to lower case
|
||||||
e.g.
|
|
||||||
Name => name, Request => request
|
Args:
|
||||||
URL => url, METHOD => method, Headers => headers, Data => data
|
origin_dict (dict): mapping data structure
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
dict: mapping with all keys lowered.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
>>> origin_dict = {
|
||||||
|
"Name": "",
|
||||||
|
"Request": "",
|
||||||
|
"URL": "",
|
||||||
|
"METHOD": "",
|
||||||
|
"Headers": "",
|
||||||
|
"Data": ""
|
||||||
|
}
|
||||||
|
>>> lower_dict_keys(origin_dict)
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"request": "",
|
||||||
|
"url": "",
|
||||||
|
"method": "",
|
||||||
|
"headers": "",
|
||||||
|
"data": ""
|
||||||
|
}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if not origin_dict or not isinstance(origin_dict, dict):
|
if not origin_dict or not isinstance(origin_dict, dict):
|
||||||
return origin_dict
|
return origin_dict
|
||||||
@@ -139,24 +162,19 @@ def lower_dict_keys(origin_dict):
|
|||||||
for key, value in origin_dict.items()
|
for key, value in origin_dict.items()
|
||||||
}
|
}
|
||||||
|
|
||||||
def lower_config_dict_key(config_dict):
|
def lower_test_dict_keys(test_dict):
|
||||||
""" convert key in config dict to lower case, convertion will occur in three places:
|
""" convert keys in test_dict to lower case, convertion will occur in two places:
|
||||||
1, all keys in config dict;
|
1, all keys in test_dict;
|
||||||
2, all keys in config["request"]
|
2, all keys in test_dict["request"]
|
||||||
3, all keys in config["request"]["headers"]
|
|
||||||
"""
|
"""
|
||||||
# convert keys in config dict
|
# convert keys in test_dict
|
||||||
config_dict = lower_dict_keys(config_dict)
|
test_dict = lower_dict_keys(test_dict)
|
||||||
|
|
||||||
if "request" in config_dict:
|
if "request" in test_dict:
|
||||||
# convert keys in config["request"]
|
# convert keys in test_dict["request"]
|
||||||
config_dict["request"] = lower_dict_keys(config_dict["request"])
|
test_dict["request"] = lower_dict_keys(test_dict["request"])
|
||||||
|
|
||||||
# convert keys in config["request"]["headers"]
|
return test_dict
|
||||||
if "headers" in config_dict["request"]:
|
|
||||||
config_dict["request"]["headers"] = lower_dict_keys(config_dict["request"]["headers"])
|
|
||||||
|
|
||||||
return config_dict
|
|
||||||
|
|
||||||
def convert_mappinglist_to_orderdict(mapping_list):
|
def convert_mappinglist_to_orderdict(mapping_list):
|
||||||
""" convert mapping list to ordered dict
|
""" convert mapping list to ordered dict
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ class TestRunner(ApiServerUnittest):
|
|||||||
"teardown_hooks": ["${teardown_hook_sleep_N_secs($response, 2)}"]
|
"teardown_hooks": ["${teardown_hook_sleep_N_secs($response, 2)}"]
|
||||||
}
|
}
|
||||||
config_dict = {}
|
config_dict = {}
|
||||||
self.test_runner.init_config(config_dict, "testcase")
|
self.test_runner.init_test(config_dict, "testcase")
|
||||||
|
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
self.test_runner.run_test(test)
|
self.test_runner.run_test(test)
|
||||||
@@ -215,7 +215,7 @@ class TestRunner(ApiServerUnittest):
|
|||||||
"teardown_hooks": ["${teardown_hook_sleep_N_secs($response, 2)}"]
|
"teardown_hooks": ["${teardown_hook_sleep_N_secs($response, 2)}"]
|
||||||
}
|
}
|
||||||
config_dict = {}
|
config_dict = {}
|
||||||
self.test_runner.init_config(config_dict, "testcase")
|
self.test_runner.init_test(config_dict, "testcase")
|
||||||
|
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
self.test_runner.run_test(test)
|
self.test_runner.run_test(test)
|
||||||
@@ -241,7 +241,7 @@ class TestRunner(ApiServerUnittest):
|
|||||||
os.getcwd(), 'tests/data/test_bugfix.yml')
|
os.getcwd(), 'tests/data/test_bugfix.yml')
|
||||||
testcases = loader.load_file(testcase_file_path)
|
testcases = loader.load_file(testcase_file_path)
|
||||||
config_dict = {}
|
config_dict = {}
|
||||||
self.test_runner.init_config(config_dict, "testcase")
|
self.test_runner.init_test(config_dict, "testcase")
|
||||||
|
|
||||||
test = testcases[2]["test"]
|
test = testcases[2]["test"]
|
||||||
self.test_runner.run_test(test)
|
self.test_runner.run_test(test)
|
||||||
|
|||||||
@@ -167,19 +167,19 @@ class TestUtils(ApiServerUnittest):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new_dict = utils.lower_config_dict_key(origin_dict)
|
new_dict = utils.lower_test_dict_keys(origin_dict)
|
||||||
self.assertIn("name", new_dict)
|
self.assertIn("name", new_dict)
|
||||||
self.assertIn("request", new_dict)
|
self.assertIn("request", new_dict)
|
||||||
self.assertIn("method", new_dict["request"])
|
self.assertIn("method", new_dict["request"])
|
||||||
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"])
|
||||||
|
|
||||||
origin_dict = {
|
origin_dict = {
|
||||||
"Name": "test",
|
"Name": "test",
|
||||||
"Request": "$default_request"
|
"Request": "$default_request"
|
||||||
}
|
}
|
||||||
new_dict = utils.lower_config_dict_key(origin_dict)
|
new_dict = utils.lower_test_dict_keys(origin_dict)
|
||||||
self.assertIn("$default_request", new_dict["request"])
|
self.assertIn("$default_request", new_dict["request"])
|
||||||
|
|
||||||
def test_lower_dict_keys(self):
|
def test_lower_dict_keys(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user