mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 10:49:43 +08:00
feat: genernate html report with specified report file
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -12,3 +12,6 @@ logs/%
|
||||
.coverage
|
||||
locustfile.py
|
||||
site/
|
||||
.idea/
|
||||
reports/
|
||||
tests/reports/
|
||||
|
||||
@@ -10,7 +10,7 @@ from httprunner import (__version__, exceptions, loader, logger, parser,
|
||||
class HttpRunner(object):
|
||||
|
||||
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.
|
||||
|
||||
Args:
|
||||
@@ -35,6 +35,7 @@ class HttpRunner(object):
|
||||
self.save_tests = save_tests
|
||||
self.report_template = report_template
|
||||
self.report_dir = report_dir
|
||||
self.report_file = report_file
|
||||
self._summary = None
|
||||
|
||||
def _add_tests(self, testcases):
|
||||
@@ -207,7 +208,8 @@ class HttpRunner(object):
|
||||
report_path = report.render_html_report(
|
||||
self._summary,
|
||||
self.report_template,
|
||||
self.report_dir
|
||||
self.report_dir,
|
||||
self.report_file
|
||||
)
|
||||
|
||||
return report_path
|
||||
|
||||
@@ -271,7 +271,7 @@ def __stringify_meta_datas(meta_datas):
|
||||
__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
|
||||
|
||||
Args:
|
||||
@@ -298,7 +298,10 @@ def render_html_report(summary, report_template=None, report_dir=None):
|
||||
start_at_timestamp = int(summary["time"]["start_at"])
|
||||
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:
|
||||
template_content = fp_r.read()
|
||||
|
||||
@@ -190,6 +190,19 @@ class TestHttpRunner(ApiServerUnittest):
|
||||
self.assertGreater(len(os.listdir(report_save_dir)), 0)
|
||||
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):
|
||||
log_file_path = os.path.join(os.getcwd(), 'reports', "test_log_file.log")
|
||||
runner = HttpRunner(failfast=True, log_file=log_file_path)
|
||||
|
||||
Reference in New Issue
Block a user