mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-11 18:59:39 +08:00
Merge branch 'master' of https://github.com/httprunner/httprunner into refactor-python3-packages
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
import copy
|
||||||
import time
|
import time
|
||||||
from typing import Any, Dict, List, Text, Union
|
from typing import Any, Dict, List, Text, Union
|
||||||
|
|
||||||
@@ -73,23 +74,23 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
)
|
)
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
|
|
||||||
step.variables = runner.merge_step_variables(step.variables)
|
|
||||||
|
|
||||||
# parse
|
# parse
|
||||||
functions = runner.parser.functions_mapping
|
functions = runner.parser.functions_mapping
|
||||||
prepare_upload_step(step, functions)
|
prepare_upload_step(step, functions)
|
||||||
|
# step_variables should be defined after prepare_upload_step
|
||||||
|
step_variables = runner.merge_step_variables(step.variables)
|
||||||
request_dict = step.request.dict()
|
request_dict = step.request.dict()
|
||||||
request_dict.pop("upload", None)
|
request_dict.pop("upload", None)
|
||||||
parsed_request_dict = runner.parser.parse_data(request_dict, step.variables)
|
parsed_request_dict = runner.parser.parse_data(request_dict, step_variables)
|
||||||
parsed_request_dict["headers"].setdefault(
|
parsed_request_dict["headers"].setdefault(
|
||||||
"HRUN-Request-ID",
|
"HRUN-Request-ID",
|
||||||
f"HRUN-{runner.case_id}-{str(int(time.time() * 1000))[-6:]}",
|
f"HRUN-{runner.case_id}-{str(int(time.time() * 1000))[-6:]}",
|
||||||
)
|
)
|
||||||
step.variables["request"] = parsed_request_dict
|
step_variables["request"] = parsed_request_dict
|
||||||
|
|
||||||
# setup hooks
|
# setup hooks
|
||||||
if step.setup_hooks:
|
if step.setup_hooks:
|
||||||
call_hooks(runner, step.setup_hooks, step.variables, "setup request")
|
call_hooks(runner, step.setup_hooks, step_variables, "setup request")
|
||||||
|
|
||||||
# prepare arguments
|
# prepare arguments
|
||||||
config = runner.get_config()
|
config = runner.get_config()
|
||||||
@@ -126,11 +127,11 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
import allure
|
import allure
|
||||||
allure.attach(response_print, name="response details", attachment_type=allure.attachment_type.TEXT)
|
allure.attach(response_print, name="response details", attachment_type=allure.attachment_type.TEXT)
|
||||||
resp_obj = ResponseObject(resp, runner.parser)
|
resp_obj = ResponseObject(resp, runner.parser)
|
||||||
step.variables["response"] = resp_obj
|
step_variables["response"] = resp_obj
|
||||||
|
|
||||||
# teardown hooks
|
# teardown hooks
|
||||||
if step.teardown_hooks:
|
if step.teardown_hooks:
|
||||||
call_hooks(runner, step.teardown_hooks, step.variables, "teardown request")
|
call_hooks(runner, step.teardown_hooks, step_variables, "teardown request")
|
||||||
|
|
||||||
def log_req_resp_details():
|
def log_req_resp_details():
|
||||||
err_msg = "\n{} DETAILED REQUEST & RESPONSE {}\n".format("*" * 32, "*" * 32)
|
err_msg = "\n{} DETAILED REQUEST & RESPONSE {}\n".format("*" * 32, "*" * 32)
|
||||||
@@ -139,10 +140,10 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
|
|
||||||
# extract
|
# extract
|
||||||
extractors = step.extract
|
extractors = step.extract
|
||||||
extract_mapping = resp_obj.extract(extractors, step.variables)
|
extract_mapping = resp_obj.extract(extractors, step_variables)
|
||||||
step_result.export_vars = extract_mapping
|
step_result.export_vars = extract_mapping
|
||||||
|
|
||||||
variables_mapping = step.variables
|
variables_mapping = step_variables
|
||||||
variables_mapping.update(extract_mapping)
|
variables_mapping.update(extract_mapping)
|
||||||
|
|
||||||
# validate
|
# validate
|
||||||
|
|||||||
@@ -50,10 +50,10 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
name=step.name,
|
name=step.name,
|
||||||
success=False,
|
success=False,
|
||||||
)
|
)
|
||||||
step.variables = runner.merge_step_variables(step.variables)
|
step_variables = runner.merge_step_variables(step.variables)
|
||||||
# parse
|
# parse
|
||||||
request_dict = step.sql_request.dict()
|
request_dict = step.sql_request.dict()
|
||||||
parsed_request_dict = runner.parser.parse_data(request_dict, step.variables)
|
parsed_request_dict = runner.parser.parse_data(request_dict, step_variables)
|
||||||
config = runner.get_config()
|
config = runner.get_config()
|
||||||
parsed_request_dict["db_config"]["psm"] = (
|
parsed_request_dict["db_config"]["psm"] = (
|
||||||
parsed_request_dict["db_config"]["psm"] or config.db.psm
|
parsed_request_dict["db_config"]["psm"] or config.db.psm
|
||||||
@@ -92,7 +92,7 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
|
|
||||||
# setup hooks
|
# setup hooks
|
||||||
if step.setup_hooks:
|
if step.setup_hooks:
|
||||||
call_hooks(runner, step.setup_hooks, step.variables, "setup request")
|
call_hooks(runner, step.setup_hooks, step_variables, "setup request")
|
||||||
|
|
||||||
# log request
|
# log request
|
||||||
sql_request_print = "====== sql request details ======\n"
|
sql_request_print = "====== sql request details ======\n"
|
||||||
@@ -136,11 +136,11 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
allure.attach(sql_request_print, name="sql response details", attachment_type=allure.attachment_type.TEXT)
|
allure.attach(sql_request_print, name="sql response details", attachment_type=allure.attachment_type.TEXT)
|
||||||
|
|
||||||
resp_obj = SqlResponseObject(sql_resp, parser=runner.parser)
|
resp_obj = SqlResponseObject(sql_resp, parser=runner.parser)
|
||||||
step.variables["sql_response"] = resp_obj
|
step_variables["sql_response"] = resp_obj
|
||||||
|
|
||||||
# teardown hooks
|
# teardown hooks
|
||||||
if step.teardown_hooks:
|
if step.teardown_hooks:
|
||||||
call_hooks(runner, step.teardown_hooks, step.variables, "teardown request")
|
call_hooks(runner, step.teardown_hooks, step_variables, "teardown request")
|
||||||
|
|
||||||
def log_sql_req_resp_details():
|
def log_sql_req_resp_details():
|
||||||
err_msg = "\n{} SQL DETAILED REQUEST & RESPONSE {}\n".format("*" * 32, "*" * 32)
|
err_msg = "\n{} SQL DETAILED REQUEST & RESPONSE {}\n".format("*" * 32, "*" * 32)
|
||||||
@@ -152,7 +152,7 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
extract_mapping = resp_obj.extract(extractors)
|
extract_mapping = resp_obj.extract(extractors)
|
||||||
step_result.export_vars = extract_mapping
|
step_result.export_vars = extract_mapping
|
||||||
|
|
||||||
variables_mapping = step.variables
|
variables_mapping = step_variables
|
||||||
variables_mapping.update(extract_mapping)
|
variables_mapping.update(extract_mapping)
|
||||||
|
|
||||||
# validate
|
# validate
|
||||||
@@ -167,6 +167,7 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
session_data = runner.session.data
|
session_data = runner.session.data
|
||||||
session_data.success = step_result.success
|
session_data.success = step_result.success
|
||||||
session_data.validators = resp_obj.validation_results
|
session_data.validators = resp_obj.validation_results
|
||||||
|
|
||||||
# save step data
|
# save step data
|
||||||
step_result.data = session_data
|
step_result.data = session_data
|
||||||
step_result.elapsed = time.time() - start_time
|
step_result.elapsed = time.time() - start_time
|
||||||
|
|||||||
@@ -57,10 +57,10 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
name=step.name,
|
name=step.name,
|
||||||
success=False,
|
success=False,
|
||||||
)
|
)
|
||||||
step.variables = runner.merge_step_variables(step.variables)
|
step_variables = runner.merge_step_variables(step.variables)
|
||||||
# parse
|
# parse
|
||||||
request_dict = step.thrift_request.dict()
|
request_dict = step.thrift_request.dict()
|
||||||
parsed_request_dict = runner.parser.parse_data(request_dict, step.variables)
|
parsed_request_dict = runner.parser.parse_data(request_dict, step_variables)
|
||||||
config = runner.get_config()
|
config = runner.get_config()
|
||||||
parsed_request_dict["psm"] = parsed_request_dict["psm"] or config.thrift.psm
|
parsed_request_dict["psm"] = parsed_request_dict["psm"] or config.thrift.psm
|
||||||
parsed_request_dict["env"] = parsed_request_dict["env"] or config.thrift.env
|
parsed_request_dict["env"] = parsed_request_dict["env"] or config.thrift.env
|
||||||
@@ -96,7 +96,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
# "HRUN-Request-ID",
|
# "HRUN-Request-ID",
|
||||||
# f"HRUN-{self.__case_id}-{str(int(time.time() * 1000))[-6:]}",
|
# f"HRUN-{self.__case_id}-{str(int(time.time() * 1000))[-6:]}",
|
||||||
# )
|
# )
|
||||||
step.variables["thrift_request"] = parsed_request_dict
|
step_variables["thrift_request"] = parsed_request_dict
|
||||||
|
|
||||||
psm = parsed_request_dict["psm"]
|
psm = parsed_request_dict["psm"]
|
||||||
if not runner.thrift_client:
|
if not runner.thrift_client:
|
||||||
@@ -118,7 +118,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
|
|
||||||
# setup hooks
|
# setup hooks
|
||||||
if step.setup_hooks:
|
if step.setup_hooks:
|
||||||
call_hooks(runner, step.setup_hooks, step.variables, "setup request")
|
call_hooks(runner, step.setup_hooks, step_variables, "setup request")
|
||||||
|
|
||||||
# log request
|
# log request
|
||||||
thrift_request_print = "====== thrift request details ======\n"
|
thrift_request_print = "====== thrift request details ======\n"
|
||||||
@@ -136,7 +136,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
parsed_request_dict["params"], parsed_request_dict["method"]
|
parsed_request_dict["params"], parsed_request_dict["method"]
|
||||||
)
|
)
|
||||||
resp_obj = ThriftResponseObject(resp, parser=runner.parser)
|
resp_obj = ThriftResponseObject(resp, parser=runner.parser)
|
||||||
step.variables["thrift_response"] = resp_obj
|
step_variables["thrift_response"] = resp_obj
|
||||||
|
|
||||||
# log response
|
# log response
|
||||||
thrift_response_print = "====== thrift response details ======\n"
|
thrift_response_print = "====== thrift response details ======\n"
|
||||||
@@ -149,7 +149,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
|
|
||||||
# teardown hooks
|
# teardown hooks
|
||||||
if step.teardown_hooks:
|
if step.teardown_hooks:
|
||||||
call_hooks(runner, step.teardown_hooks, step.variables, "teardown request")
|
call_hooks(runner, step.teardown_hooks, step_variables, "teardown request")
|
||||||
|
|
||||||
def log_thrift_req_resp_details():
|
def log_thrift_req_resp_details():
|
||||||
err_msg = "\n{} THRIFT DETAILED REQUEST & RESPONSE {}\n".format(
|
err_msg = "\n{} THRIFT DETAILED REQUEST & RESPONSE {}\n".format(
|
||||||
@@ -163,7 +163,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
extract_mapping = resp_obj.extract(extractors)
|
extract_mapping = resp_obj.extract(extractors)
|
||||||
step_result.export_vars = extract_mapping
|
step_result.export_vars = extract_mapping
|
||||||
|
|
||||||
variables_mapping = step.variables
|
variables_mapping = step_variables
|
||||||
variables_mapping.update(extract_mapping)
|
variables_mapping.update(extract_mapping)
|
||||||
|
|
||||||
# validate
|
# validate
|
||||||
@@ -178,6 +178,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
|
|||||||
session_data = runner.session.data
|
session_data = runner.session.data
|
||||||
session_data.success = step_result.success
|
session_data.success = step_result.success
|
||||||
session_data.validators = resp_obj.validation_results
|
session_data.validators = resp_obj.validation_results
|
||||||
|
|
||||||
# save step data
|
# save step data
|
||||||
step_result.data = session_data
|
step_result.data = session_data
|
||||||
step_result.elapsed = time.time() - start_time
|
step_result.elapsed = time.time() - start_time
|
||||||
|
|||||||
Reference in New Issue
Block a user