From a1357834b4db960344bfe3d9be9e278f1d8262d2 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Tue, 27 Mar 2018 17:29:05 +0800 Subject: [PATCH] bugfix: represent unicode literals in html report --- httprunner/client.py | 8 ++++++-- httprunner/report.py | 7 ++++--- httprunner/templates/default_report_template.html | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/httprunner/client.py b/httprunner/client.py index d5b76477..a94c20e0 100644 --- a/httprunner/client.py +++ b/httprunner/client.py @@ -113,12 +113,16 @@ class HttpSession(requests.Session): self.meta_data["request_body"] = response.request.body self.meta_data["status_code"] = response.status_code self.meta_data["response_headers"] = response.headers - self.meta_data["response_content"] = response.content + + try: + self.meta_data["response_body"] = response.json() + except ValueError: + self.meta_data["response_body"] = response.content msg = "response details:\n" msg += "> status_code: {}\n".format(self.meta_data["status_code"]) msg += "> headers: {}\n".format(self.meta_data["response_headers"]) - msg += "> content: {}".format(self.meta_data["response_content"]) + msg += "> body: {}".format(self.meta_data["response_body"]) logger.log_debug(msg) # get the length of the content, but if the argument stream is set to True, we take diff --git a/httprunner/report.py b/httprunner/report.py index 870ad5ab..d8dcbb71 100644 --- a/httprunner/report.py +++ b/httprunner/report.py @@ -5,11 +5,12 @@ import os import platform import time import unittest +from collections import Iterable from datetime import datetime from httprunner import logger from httprunner.__about__ import __version__ -from httprunner.compat import basestring, bytes, numeric_types +from httprunner.compat import basestring, bytes, json, numeric_types from jinja2 import Template from requests.structures import CaseInsensitiveDict @@ -62,13 +63,13 @@ def make_json_serializable(raw_json): value = value.decode("utf-8") elif isinstance(value, CaseInsensitiveDict): value = dict(value) - elif not isinstance(value, (basestring, numeric_types)): + elif not isinstance(value, (basestring, numeric_types, Iterable)): # class instance, e.g. MultipartEncoder() value = repr(value) serializable_json[key] = value - return serializable_json + return json.dumps(serializable_json, indent=2, ensure_ascii=False) class HtmlTestResult(unittest.TextTestResult): diff --git a/httprunner/templates/default_report_template.html b/httprunner/templates/default_report_template.html index cd4413f3..d5841214 100644 --- a/httprunner/templates/default_report_template.html +++ b/httprunner/templates/default_report_template.html @@ -188,7 +188,7 @@