From 2acf8d511b91df321726ed6de5bf0e9b6d38b3de Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 17 Dec 2019 18:57:03 +0800 Subject: [PATCH] refactor: dumps request and response headers/body, display indented json in report --- docs/CHANGELOG.md | 6 ++++++ httprunner/report.py | 21 +++++++++++++++++---- httprunner/static/report_template.html | 20 +++++--------------- 3 files changed, 28 insertions(+), 19 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index e9eb25c8..492e365c 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # Release History +## 2.4.4 (2019-12-17) + +**Changed** + +- refactor: dumps request and response headers/body, display indented json in report + ## 2.4.3 (2019-12-16) **Added** diff --git a/httprunner/report.py b/httprunner/report.py index 1cc69d3b..82bebf3d 100644 --- a/httprunner/report.py +++ b/httprunner/report.py @@ -110,6 +110,19 @@ def stringify_summary(summary): record["response_time"] = __get_total_response_time(meta_datas_expanded) +def dumps_json(value): + """ dumps json value to indented string + + Args: + value (dict): raw json data + + Returns: + str: indented json dump string + + """ + return json.dumps(value, indent=2, ensure_ascii=False) + + def __stringify_request(request_data): """ stringfy HTTP request data @@ -140,8 +153,8 @@ def __stringify_request(request_data): """ for key, value in request_data.items(): - if isinstance(value, list): - value = json.dumps(value, indent=2, ensure_ascii=False) + if isinstance(value, (list, dict)): + value = dumps_json(value) elif isinstance(value, bytes): try: @@ -189,8 +202,8 @@ def __stringify_response(response_data): """ for key, value in response_data.items(): - if isinstance(value, list): - value = json.dumps(value, indent=2, ensure_ascii=False) + if isinstance(value, (list, dict)): + value = dumps_json(value) elif isinstance(value, bytes): try: diff --git a/httprunner/static/report_template.html b/httprunner/static/report_template.html index 209c18ae..f943172a 100644 --- a/httprunner/static/report_template.html +++ b/httprunner/static/report_template.html @@ -232,14 +232,10 @@ {{key}} - {% if key == "headers" %} - {% for header_key, header_value in req_resp.request.headers.items() %} -
- {{ header_key }}: {{ header_value }} -
- {% endfor %} + {% if key in ["headers", "body"] %} +
{{ value | e }}
{% else %} - {{value}} + {{value}} {% endif %} @@ -254,19 +250,13 @@ {{key}} - {% if key == "headers" %} - {% for header_key, header_value in req_resp.response.headers.items() %} -
- {{ header_key }}: {{ header_value }} -
- {% endfor %} - {% elif key == "content" %} + {% if key == "content" %} {% if "image" in req_resp.response.content_type %} {% else %} {{ value }} {% endif %} - {% elif key in ["text", "json"] %} + {% elif key in ["headers", "text", "json"] %}
{{ value | e }}
{% else %} {{ value }}