run_step_request中不改变step.variables

This commit is contained in:
duanchao.bill
2022-06-13 16:49:00 +08:00
parent 6f3d8325b4
commit b22f1f826a
3 changed files with 22 additions and 32 deletions

View File

@@ -1,3 +1,4 @@
import copy
import time
from typing import Any, Dict, List, Text, Union
@@ -67,13 +68,11 @@ def call_hooks(
def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
"""run teststep: request"""
step_start_variables = step.variables
step_result = StepResult(
name=step.name,
success=False,
)
step.variables = runner.merge_step_variables(step.variables)
step_variables = runner.merge_step_variables(step.variables)
start_time = time.time()
@@ -82,16 +81,16 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
prepare_upload_step(step, functions)
request_dict = step.request.dict()
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(
"HRUN-Request-ID",
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
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
config = runner.get_config()
@@ -104,11 +103,11 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
# request
resp = runner.session.request(method, url, **parsed_request_dict)
resp_obj = ResponseObject(resp, runner.parser)
step.variables["response"] = resp_obj
step_variables["response"] = resp_obj
# 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():
err_msg = "\n{} DETAILED REQUEST & RESPONSE {}\n".format("*" * 32, "*" * 32)
@@ -134,12 +133,11 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
# 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
variables_mapping = step.variables
variables_mapping = step_variables
variables_mapping.update(extract_mapping)
step_start_variables.update(extract_mapping)
# validate
validators = step.validators
@@ -153,8 +151,6 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
session_data = runner.session.data
session_data.success = step_result.success
session_data.validators = resp_obj.validation_results
step.variables.clear()
step.variables = step_start_variables
# save step data
step_result.data = session_data

View File

@@ -44,17 +44,16 @@ def ensure_sql_ready():
def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
"""run teststep:sql request"""
step_start_variables = step.variables
start_time = time.time()
step_result = StepResult(
name=step.name,
success=False,
)
step.variables = runner.merge_step_variables(step.variables)
step_variables = runner.merge_step_variables(step.variables)
# parse
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()
parsed_request_dict["db_config"]["psm"] = (
parsed_request_dict["db_config"]["psm"] or config.db.psm
@@ -93,7 +92,7 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
# 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")
logger.info(f"Executing SQL: {parsed_request_dict['sql']}")
if step.sql_request.method == SqlMethodEnum.FETCHONE:
@@ -115,11 +114,11 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
f"step.sql_request.method {parsed_request_dict['method']} not support"
)
resp_obj = SqlResponseObject(sql_resp, parser=runner.parser)
step.variables["sql_response"] = resp_obj
step_variables["sql_response"] = resp_obj
# 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():
err_msg = "\n{} SQL DETAILED REQUEST & RESPONSE {}\n".format("*" * 32, "*" * 32)
@@ -145,7 +144,7 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
extract_mapping = resp_obj.extract(extractors)
step_result.export_vars = extract_mapping
variables_mapping = step.variables
variables_mapping = step_variables
variables_mapping.update(extract_mapping)
# validate
@@ -160,8 +159,6 @@ def run_step_sql_request(runner: HttpRunner, step: TStep) -> StepResult:
session_data = runner.session.data
session_data.success = step_result.success
session_data.validators = resp_obj.validation_results
step.variables.clear()
step.variables = step_start_variables
# save step data
step_result.data = session_data

View File

@@ -52,17 +52,16 @@ def ensure_thrift_ready():
def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
"""run teststep:thrift request"""
step_start_variables = step.variables
start_time = time.time()
step_result = StepResult(
name=step.name,
success=False,
)
step.variables = runner.merge_step_variables(step.variables)
step_variables = runner.merge_step_variables(step.variables)
# parse
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()
parsed_request_dict["psm"] = parsed_request_dict["psm"] or config.thrift.psm
parsed_request_dict["env"] = parsed_request_dict["env"] or config.thrift.env
@@ -98,7 +97,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
# "HRUN-Request-ID",
# 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"]
if not runner.thrift_client:
@@ -120,18 +119,18 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
# 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")
# thrift request
resp = runner.thrift_client.send_request(
parsed_request_dict["params"], parsed_request_dict["method"]
)
resp_obj = ThriftResponseObject(resp, parser=runner.parser)
step.variables["thrift_response"] = resp_obj
step_variables["thrift_response"] = resp_obj
# 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():
err_msg = "\n{} THRIFT DETAILED REQUEST & RESPONSE {}\n".format(
@@ -159,7 +158,7 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
extract_mapping = resp_obj.extract(extractors)
step_result.export_vars = extract_mapping
variables_mapping = step.variables
variables_mapping = step_variables
variables_mapping.update(extract_mapping)
# validate
@@ -174,8 +173,6 @@ def run_step_thrift_request(runner: HttpRunner, step: TStep) -> StepResult:
session_data = runner.session.data
session_data.success = step_result.success
session_data.validators = resp_obj.validation_results
step.variables.clear()
step.variables = step_start_variables
# save step data
step_result.data = session_data