mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-05 15:59:33 +08:00
fix base_url with api referrence
This commit is contained in:
@@ -614,22 +614,13 @@ def _extend_with_api(test_dict, api_def_dict):
|
|||||||
|
|
||||||
# TODO: merge & override request
|
# TODO: merge & override request
|
||||||
test_dict["request"] = api_def_dict.pop("request", {})
|
test_dict["request"] = api_def_dict.pop("request", {})
|
||||||
# base_url
|
|
||||||
if "base_url" in test_dict:
|
|
||||||
base_url = test_dict.pop("base_url")
|
|
||||||
test_dict["request"]["url"] = utils.build_url(
|
|
||||||
base_url,
|
|
||||||
test_dict["request"]["url"]
|
|
||||||
)
|
|
||||||
|
|
||||||
# verify
|
# base_url & verify: priority api_def_dict > test_dict
|
||||||
if "verify" in test_dict:
|
if "base_url" in api_def_dict:
|
||||||
verify = test_dict.pop("verify")
|
test_dict["base_url"] = api_def_dict["base_url"]
|
||||||
elif "verify" in api_def_dict:
|
|
||||||
verify = api_def_dict.pop("verify")
|
if "verify" in api_def_dict:
|
||||||
else:
|
test_dict["request"]["verify"] = api_def_dict["verify"]
|
||||||
verify = True
|
|
||||||
test_dict["request"]["verify"] = verify
|
|
||||||
|
|
||||||
# merge & override setup_hooks
|
# merge & override setup_hooks
|
||||||
def_setup_hooks = api_def_dict.pop("setup_hooks", [])
|
def_setup_hooks = api_def_dict.pop("setup_hooks", [])
|
||||||
@@ -786,10 +777,6 @@ def __parse_tests(tests, config, project_mapping):
|
|||||||
_parse_testcase(test_dict, project_mapping)
|
_parse_testcase(test_dict, project_mapping)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# test_dict is API test, has two cases.
|
|
||||||
# (1) test_dict has API reference
|
|
||||||
# (2) test_dict is defined directly
|
|
||||||
|
|
||||||
# 1, config => tests
|
# 1, config => tests
|
||||||
# override test_dict variables
|
# override test_dict variables
|
||||||
test_dict["variables"] = utils.extend_variables(
|
test_dict["variables"] = utils.extend_variables(
|
||||||
@@ -808,27 +795,26 @@ def __parse_tests(tests, config, project_mapping):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
if "api_def" in test_dict:
|
if "api_def" in test_dict:
|
||||||
# case (1)
|
# test_dict has API reference
|
||||||
# 2, test_dict => api
|
# 2, test_dict => api
|
||||||
api_def_dict = test_dict.pop("api_def")
|
api_def_dict = test_dict.pop("api_def")
|
||||||
_extend_with_api(test_dict, api_def_dict)
|
_extend_with_api(test_dict, api_def_dict)
|
||||||
else:
|
|
||||||
# case (2)
|
if "base_url" in test_dict:
|
||||||
if "base_url" in test_dict:
|
base_url = parse_data(
|
||||||
base_url = parse_data(
|
test_dict.pop("base_url"),
|
||||||
test_dict.pop("base_url"),
|
test_dict["variables"],
|
||||||
test_dict["variables"],
|
functions
|
||||||
functions
|
)
|
||||||
)
|
request_url = parse_data(
|
||||||
request_url = parse_data(
|
test_dict["request"]["url"],
|
||||||
test_dict["request"]["url"],
|
test_dict["variables"],
|
||||||
test_dict["variables"],
|
functions
|
||||||
functions
|
)
|
||||||
)
|
test_dict["request"]["url"] = utils.build_url(
|
||||||
test_dict["request"]["url"] = utils.build_url(
|
base_url,
|
||||||
base_url,
|
request_url
|
||||||
request_url
|
)
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _parse_testcase(testcase, project_mapping):
|
def _parse_testcase(testcase, project_mapping):
|
||||||
|
|||||||
@@ -598,6 +598,7 @@ class TestParser(unittest.TestCase):
|
|||||||
loader.load_project_tests(os.path.join(os.getcwd(), "tests"))
|
loader.load_project_tests(os.path.join(os.getcwd(), "tests"))
|
||||||
raw_testinfo = {
|
raw_testinfo = {
|
||||||
"name": "get token",
|
"name": "get token",
|
||||||
|
"base_url": "https://debugtalk.com",
|
||||||
"api": "get_token",
|
"api": "get_token",
|
||||||
}
|
}
|
||||||
api_def_dict = loader.load_test(raw_testinfo)
|
api_def_dict = loader.load_test(raw_testinfo)
|
||||||
@@ -607,6 +608,7 @@ class TestParser(unittest.TestCase):
|
|||||||
"variables": [
|
"variables": [
|
||||||
{"var": 123}
|
{"var": 123}
|
||||||
],
|
],
|
||||||
|
"base_url": "https://httprunner.org",
|
||||||
'request': {
|
'request': {
|
||||||
'url': '/api/get-token',
|
'url': '/api/get-token',
|
||||||
'method': 'POST',
|
'method': 'POST',
|
||||||
@@ -620,6 +622,7 @@ class TestParser(unittest.TestCase):
|
|||||||
}
|
}
|
||||||
|
|
||||||
extended_block = parser._extend_with_api(test_block, api_def_dict)
|
extended_block = parser._extend_with_api(test_block, api_def_dict)
|
||||||
|
self.assertEqual(extended_block["base_url"], "https://debugtalk.com")
|
||||||
self.assertEqual(extended_block["name"], "override block")
|
self.assertEqual(extended_block["name"], "override block")
|
||||||
self.assertIn({'var': 123}, extended_block["variables"])
|
self.assertIn({'var': 123}, extended_block["variables"])
|
||||||
self.assertIn({'check': 'status_code', 'expect': 201, 'comparator': 'eq'}, extended_block["validate"])
|
self.assertIn({'check': 'status_code', 'expect': 201, 'comparator': 'eq'}, extended_block["validate"])
|
||||||
|
|||||||
Reference in New Issue
Block a user