mirror of
https://github.com/httprunner/httprunner.git
synced 2026-09-05 15:37:35 +08:00
feat: genernate html report with specified report file
This commit is contained in:
@@ -12,3 +12,6 @@ logs/%
|
|||||||
.coverage
|
.coverage
|
||||||
locustfile.py
|
locustfile.py
|
||||||
site/
|
site/
|
||||||
|
.idea/
|
||||||
|
reports/
|
||||||
|
tests/reports/
|
||||||
|
|||||||
+4
-2
@@ -10,7 +10,7 @@ from httprunner import (__version__, exceptions, loader, logger, parser,
|
|||||||
class HttpRunner(object):
|
class HttpRunner(object):
|
||||||
|
|
||||||
def __init__(self, failfast=False, save_tests=False, report_template=None, report_dir=None,
|
def __init__(self, failfast=False, save_tests=False, report_template=None, report_dir=None,
|
||||||
log_level="INFO", log_file=None):
|
log_level="INFO", log_file=None, report_file=None):
|
||||||
""" initialize HttpRunner.
|
""" initialize HttpRunner.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -35,6 +35,7 @@ class HttpRunner(object):
|
|||||||
self.save_tests = save_tests
|
self.save_tests = save_tests
|
||||||
self.report_template = report_template
|
self.report_template = report_template
|
||||||
self.report_dir = report_dir
|
self.report_dir = report_dir
|
||||||
|
self.report_file = report_file
|
||||||
self._summary = None
|
self._summary = None
|
||||||
|
|
||||||
def _add_tests(self, testcases):
|
def _add_tests(self, testcases):
|
||||||
@@ -207,7 +208,8 @@ class HttpRunner(object):
|
|||||||
report_path = report.render_html_report(
|
report_path = report.render_html_report(
|
||||||
self._summary,
|
self._summary,
|
||||||
self.report_template,
|
self.report_template,
|
||||||
self.report_dir
|
self.report_dir,
|
||||||
|
self.report_file
|
||||||
)
|
)
|
||||||
|
|
||||||
return report_path
|
return report_path
|
||||||
|
|||||||
@@ -271,7 +271,7 @@ def __stringify_meta_datas(meta_datas):
|
|||||||
__stringify_response(data["response"])
|
__stringify_response(data["response"])
|
||||||
|
|
||||||
|
|
||||||
def render_html_report(summary, report_template=None, report_dir=None):
|
def render_html_report(summary, report_template=None, report_dir=None, report_file=None):
|
||||||
""" render html report with specified report name and template
|
""" render html report with specified report name and template
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -298,7 +298,10 @@ def render_html_report(summary, report_template=None, report_dir=None):
|
|||||||
start_at_timestamp = int(summary["time"]["start_at"])
|
start_at_timestamp = int(summary["time"]["start_at"])
|
||||||
summary["time"]["start_datetime"] = datetime.fromtimestamp(start_at_timestamp).strftime('%Y-%m-%d %H:%M:%S')
|
summary["time"]["start_datetime"] = datetime.fromtimestamp(start_at_timestamp).strftime('%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
report_path = os.path.join(report_dir, "{}.html".format(start_at_timestamp))
|
if report_file:
|
||||||
|
report_path = os.path.join(report_dir, report_file)
|
||||||
|
else:
|
||||||
|
report_path = os.path.join(report_dir, "{}.html".format(start_at_timestamp))
|
||||||
|
|
||||||
with io.open(report_template, "r", encoding='utf-8') as fp_r:
|
with io.open(report_template, "r", encoding='utf-8') as fp_r:
|
||||||
template_content = fp_r.read()
|
template_content = fp_r.read()
|
||||||
|
|||||||
@@ -190,6 +190,19 @@ class TestHttpRunner(ApiServerUnittest):
|
|||||||
self.assertGreater(len(os.listdir(report_save_dir)), 0)
|
self.assertGreater(len(os.listdir(report_save_dir)), 0)
|
||||||
shutil.rmtree(report_save_dir)
|
shutil.rmtree(report_save_dir)
|
||||||
|
|
||||||
|
def test_html_report_with_fixed_report_file(self):
|
||||||
|
report_save_dir = os.path.join(os.getcwd(), 'reports', "demo")
|
||||||
|
report_file = 'test.html'
|
||||||
|
runner = HttpRunner(failfast=True, report_dir=report_save_dir, report_file=report_file)
|
||||||
|
runner.run(self.testcase_cli_path)
|
||||||
|
summary = runner.summary
|
||||||
|
self.assertEqual(summary["stat"]["testcases"]["total"], 1)
|
||||||
|
self.assertEqual(summary["stat"]["teststeps"]["total"], 10)
|
||||||
|
self.assertEqual(summary["stat"]["teststeps"]["skipped"], 4)
|
||||||
|
self.assertEqual(len(os.listdir(report_save_dir)), 1)
|
||||||
|
self.assertTrue(os.path.isfile(os.path.join(report_save_dir, report_file)))
|
||||||
|
shutil.rmtree(report_save_dir)
|
||||||
|
|
||||||
def test_log_file(self):
|
def test_log_file(self):
|
||||||
log_file_path = os.path.join(os.getcwd(), 'reports', "test_log_file.log")
|
log_file_path = os.path.join(os.getcwd(), 'reports', "test_log_file.log")
|
||||||
runner = HttpRunner(failfast=True, log_file=log_file_path)
|
runner = HttpRunner(failfast=True, log_file=log_file_path)
|
||||||
|
|||||||
Reference in New Issue
Block a user