fix #1339: omit pseudo header names for HTTP/1, e.g. :authority, :method, :path, :schema

This commit is contained in:
debugtalk
2022-06-17 22:39:19 +08:00
parent 114b94f1d5
commit ce172d42a5
4 changed files with 26 additions and 6 deletions

View File

@@ -16,6 +16,7 @@
- feat: support skip for pytest
- feat: print request and response details in DEBUG level when running API cases
- fix: support None/dict/list format when printing sql response
- fix: omit pseudo header names for HTTP/1, e.g. :authority, :method, :path, :schema
## v4.1.3 (2022-06-14)

View File

@@ -13,6 +13,10 @@ teststeps:
foo1: bar1
foo2: bar2
headers:
:authority: postman-echo.com
:method: POST
:path: /get
:schema: https
User-Agent: HttpRunner/3.0
validate:
- eq: ["status_code", 200]

View File

@@ -1,4 +1,4 @@
# NOTE: Generated By HttpRunner v4.1.3
# NOTE: Generated By HttpRunner v4.1.4
# FROM: request_methods/hardcode.yml
@@ -18,7 +18,15 @@ class TestCaseHardcode(HttpRunner):
RunRequest("get with params")
.get("/get")
.with_params(**{"foo1": "bar1", "foo2": "bar2"})
.with_headers(**{"User-Agent": "HttpRunner/3.0"})
.with_headers(
**{
":authority": "postman-echo.com",
":method": "POST",
":path": "/get",
":schema": "https",
"User-Agent": "HttpRunner/3.0",
}
)
.validate()
.assert_equal("status_code", 200)
),

View File

@@ -93,10 +93,17 @@ def run_step_request(runner: HttpRunner, step: TStep) -> StepResult:
request_dict = step.request.dict()
request_dict.pop("upload", None)
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:]}",
)
request_headers = parsed_request_dict.pop("headers", {})
# omit pseudo header names for HTTP/1, e.g. :authority, :method, :path, :scheme
request_headers = {
key: request_headers[key] for key in request_headers if not key.startswith(":")
}
request_headers[
"HRUN-Request-ID"
] = f"HRUN-{runner.case_id}-{str(int(time.time() * 1000))[-6:]}"
parsed_request_dict["headers"] = request_headers
step_variables["request"] = parsed_request_dict
# setup hooks