mirror of
https://github.com/httprunner/httprunner.git
synced 2026-06-10 02:09:51 +08:00
fix #188: display response image in html report
This commit is contained in:
@@ -5,6 +5,7 @@ import os
|
|||||||
import platform
|
import platform
|
||||||
import time
|
import time
|
||||||
import unittest
|
import unittest
|
||||||
|
from base64 import b64encode
|
||||||
from collections import Iterable, OrderedDict
|
from collections import Iterable, OrderedDict
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
@@ -113,10 +114,18 @@ def stringify_body(meta_data, request_or_response):
|
|||||||
body = json.dumps(dict(body), ensure_ascii=False)
|
body = json.dumps(dict(body), ensure_ascii=False)
|
||||||
|
|
||||||
elif isinstance(body, (dict, list)):
|
elif isinstance(body, (dict, list)):
|
||||||
body = json.dumps(body, ensure_ascii=False)
|
body = json.dumps(body, indent=2, ensure_ascii=False)
|
||||||
|
|
||||||
elif isinstance(body, bytes):
|
elif isinstance(body, bytes):
|
||||||
body = body.decode("utf-8")
|
resp_content_type = headers.get("Content-Type", "")
|
||||||
|
if "image" in resp_content_type:
|
||||||
|
meta_data["response_data_type"] = "image"
|
||||||
|
body = "data:{};base64,{}".format(
|
||||||
|
resp_content_type,
|
||||||
|
b64encode(body).decode('utf-8')
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
body = body.decode("utf-8")
|
||||||
|
|
||||||
elif not isinstance(body, (basestring, numeric_types, Iterable)):
|
elif not isinstance(body, (basestring, numeric_types, Iterable)):
|
||||||
# class instance, e.g. MultipartEncoder()
|
# class instance, e.g. MultipartEncoder()
|
||||||
|
|||||||
@@ -245,7 +245,11 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th>body</th>
|
<th>body</th>
|
||||||
<td>
|
<td>
|
||||||
<pre>{{ record.meta_data.response_body | safe }}</pre>
|
{% if record.meta_data.response_data_type == "image" %}
|
||||||
|
<img src="{{ record.meta_data.response_body }}" />
|
||||||
|
{% else %}
|
||||||
|
<pre>{{ record.meta_data.response_body | safe }}</pre>
|
||||||
|
{% endif %}
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
37
tests/httpbin/load_image.yml
Normal file
37
tests/httpbin/load_image.yml
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
- config:
|
||||||
|
name: load images
|
||||||
|
request:
|
||||||
|
base_url: https://httpbin.org
|
||||||
|
|
||||||
|
- test:
|
||||||
|
name: get png image
|
||||||
|
request:
|
||||||
|
url: /image/png
|
||||||
|
method: GET
|
||||||
|
validators:
|
||||||
|
- eq: ["status_code", 200]
|
||||||
|
|
||||||
|
- test:
|
||||||
|
name: get jpeg image
|
||||||
|
request:
|
||||||
|
url: /image/jpeg
|
||||||
|
method: GET
|
||||||
|
validators:
|
||||||
|
- eq: ["status_code", 200]
|
||||||
|
|
||||||
|
- test:
|
||||||
|
name: get webp image
|
||||||
|
request:
|
||||||
|
url: /image/webp
|
||||||
|
method: GET
|
||||||
|
validators:
|
||||||
|
- eq: ["status_code", 200]
|
||||||
|
|
||||||
|
- test:
|
||||||
|
name: get svg image
|
||||||
|
request:
|
||||||
|
url: /image/svg
|
||||||
|
method: GET
|
||||||
|
validators:
|
||||||
|
- eq: ["status_code", 200]
|
||||||
|
|
||||||
@@ -135,3 +135,13 @@ class TestHttpRunner(ApiServerUnittest):
|
|||||||
self.assertTrue(summary["success"])
|
self.assertTrue(summary["success"])
|
||||||
self.assertEqual(summary["stat"]["testsRun"], 1)
|
self.assertEqual(summary["stat"]["testsRun"], 1)
|
||||||
self.assertEqual(summary["records"][0]["meta_data"]["response_body"]["data"], "abc")
|
self.assertEqual(summary["records"][0]["meta_data"]["response_body"]["data"], "abc")
|
||||||
|
|
||||||
|
def test_html_report_repsonse_image(self):
|
||||||
|
testset_path = "tests/httpbin/load_image.yml"
|
||||||
|
runner = HttpRunner().run(testset_path)
|
||||||
|
summary = runner.summary
|
||||||
|
output_folder_name = os.path.basename(os.path.splitext(testset_path)[0])
|
||||||
|
report = runner.gen_html_report(html_report_name=output_folder_name)
|
||||||
|
self.assertTrue(os.path.isfile(report))
|
||||||
|
report_save_dir = os.path.join(os.getcwd(), 'reports', output_folder_name)
|
||||||
|
shutil.rmtree(report_save_dir)
|
||||||
|
|||||||
Reference in New Issue
Block a user