convert keys in request headers to lowercase

This commit is contained in:
httprunner
2017-08-28 18:52:55 +08:00
parent 067cc43a1d
commit c606bf373b
2 changed files with 32 additions and 1 deletions

View File

@@ -6,8 +6,9 @@ import sys
import types import types
from collections import OrderedDict from collections import OrderedDict
from ate.testcase import TestcaseParser
from ate import utils from ate import utils
from ate.exception import ParamsError
from ate.testcase import TestcaseParser
def is_function(tup): def is_function(tup):
@@ -114,6 +115,13 @@ class Context(object):
self.testcase_parser.bind_functions(self.testcase_functions_config) self.testcase_parser.bind_functions(self.testcase_functions_config)
def register_request(self, request_dict, level="testcase"): def register_request(self, request_dict, level="testcase"):
if "headers" in request_dict:
# convert keys in request headers to lowercase
headers = request_dict.pop("headers")
if not isinstance(headers, dict):
raise ParamsError("HTTP Request Headers invalid!")
request_dict["headers"] = {key.lower(): headers[key] for key in headers}
self.__update_context_request_config(level, request_dict) self.__update_context_request_config(level, request_dict)
def __update_context_request_config(self, level, config_mapping): def __update_context_request_config(self, level, config_mapping):

View File

@@ -3,6 +3,7 @@ import unittest
from ate import utils, runner from ate import utils, runner
from ate.context import Context from ate.context import Context
from ate.exception import ParamsError
class VariableBindsUnittest(unittest.TestCase): class VariableBindsUnittest(unittest.TestCase):
@@ -159,6 +160,28 @@ class VariableBindsUnittest(unittest.TestCase):
authorization = context_variables["authorization"] authorization = context_variables["authorization"]
self.assertEqual(utils.gen_md5(TOKEN, data, random), authorization) self.assertEqual(utils.gen_md5(TOKEN, data, random), authorization)
def test_register_request(self):
request_dict = {
"url": "http://debugtalk.com",
"method": "GET",
"headers": {
"Content-Type": "application/json",
"USER-AGENT": "ios/10.3"
}
}
self.context.register_request(request_dict)
parsed_request = self.context.get_parsed_request()
self.assertIn("content-type", parsed_request["headers"])
self.assertIn("user-agent", parsed_request["headers"])
request_dict = {
"headers": "invalid headers"
}
with self.assertRaises(ParamsError):
self.context.register_request(request_dict)
def test_get_parsed_request(self): def test_get_parsed_request(self):
test_runner = runner.Runner() test_runner = runner.Runner()
testcase = { testcase = {