MCPcopy
hub / github.com/httprunner/httprunner / run_step_request

Function run_step_request

httprunner/step_request.py:80–189  ·  view source on GitHub ↗

run teststep: request

(runner: HttpRunner, step: TStep)

Source from the content-addressed store, hash-verified

78
79
80def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
81 """run teststep: request"""
82 step_result = StepResult(
83 name=step.name,
84 step_type="request",
85 success=False,
86 )
87 start_time = time.time()
88
89 # parse
90 functions = runner.parser.functions_mapping
91 step_variables = runner.merge_step_variables(step.variables)
92 prepare_upload_step(step, step_variables, functions)
93 # parse variables
94 step_variables = parse_variables_mapping(step_variables, functions)
95
96 request_dict = step.request.dict()
97 request_dict.pop("upload", None)
98 parsed_request_dict = runner.parser.parse_data(request_dict, step_variables)
99
100 request_headers = parsed_request_dict.pop("headers", {})
101 # omit pseudo header names for HTTP/1, e.g. :authority, :method, :path, :scheme
102 request_headers = {
103 key: request_headers[key] for key in request_headers if not key.startswith(":")
104 }
105 request_headers[
106 "HRUN-Request-ID"
107 ] = f"HRUN-{runner.case_id}-{str(int(time.time() * 1000))[-6:]}"
108 parsed_request_dict["headers"] = request_headers
109
110 step_variables["request"] = parsed_request_dict
111
112 # setup hooks
113 if step.setup_hooks:
114 call_hooks(runner, step.setup_hooks, step_variables, "setup request")
115
116 # prepare arguments
117 config = runner.get_config()
118 method = parsed_request_dict.pop("method")
119 url_path = parsed_request_dict.pop("url")
120 url = build_url(config.base_url, url_path)
121 parsed_request_dict["verify"] = config.verify
122 parsed_request_dict["json"] = parsed_request_dict.pop("req_json", {})
123
124 # log request
125 request_print = "====== request details ======\n"
126 request_print += f"url: {url}\n"
127 request_print += f"method: {method}\n"
128 for k, v in parsed_request_dict.items():
129 request_print += f"{k}: {pretty_format(v)}\n"
130
131 logger.debug(request_print)
132 if ALLURE is not None:
133 ALLURE.attach(
134 request_print,
135 name="request details",
136 attachment_type=ALLURE.attachment_type.TEXT,
137 )

Callers 3

runMethod · 0.85
runMethod · 0.85
runMethod · 0.85

Calls 14

StepResultClass · 0.90
prepare_upload_stepFunction · 0.90
parse_variables_mappingFunction · 0.90
build_urlFunction · 0.90
ResponseObjectClass · 0.90
call_hooksFunction · 0.85
pretty_formatFunction · 0.85
merge_step_variablesMethod · 0.80
parse_dataMethod · 0.80
get_configMethod · 0.80
requestMethod · 0.45
extractMethod · 0.45

Tested by

no test coverage detected