diff --git a/src/pytest_html/basereport.py b/src/pytest_html/basereport.py
index 8a85f058..f1bc9e6c 100644
--- a/src/pytest_html/basereport.py
+++ b/src/pytest_html/basereport.py
@@ -6,6 +6,7 @@
import math
import os
import re
+import time
import warnings
from collections import defaultdict
from html import escape
@@ -33,6 +34,7 @@ def __init__(self, report_path, config, report_data, template, css):
self._reports = defaultdict(dict)
self._report = report_data
self._report.title = self._report_path.name
+ self._suite_start_time = time.time()
@property
def css(self):
@@ -173,7 +175,8 @@ def pytest_sessionstart(self, session):
self._report.table_header = _fix_py(headers)
self._report.running_state = "started"
- self._generate_report()
+ if self._config.getini("generate_report_on_test"):
+ self._generate_report()
@pytest.hookimpl(trylast=True)
def pytest_sessionfinish(self, session):
@@ -184,6 +187,8 @@ def pytest_sessionfinish(self, session):
session=session,
)
self._report.running_state = "finished"
+ suite_stop_time = time.time()
+ self._report.total_duration = suite_stop_time - self._suite_start_time
self._generate_report()
@pytest.hookimpl(trylast=True)
@@ -223,8 +228,6 @@ def pytest_runtest_logreport(self, report):
else:
self._reports[report.nodeid][key] = [report]
- self._report.total_duration += report.duration
-
finished = report.when == "teardown" and report.outcome != "rerun"
if not finished:
return