6
6
import math
7
7
import os
8
8
import re
9
+ import time
9
10
import warnings
10
11
from collections import defaultdict
11
12
from html import escape
@@ -33,6 +34,7 @@ def __init__(self, report_path, config, report_data, template, css):
33
34
self ._reports = defaultdict (dict )
34
35
self ._report = report_data
35
36
self ._report .title = self ._report_path .name
37
+ self ._suite_start_time = time .time ()
36
38
37
39
@property
38
40
def css (self ):
@@ -173,7 +175,8 @@ def pytest_sessionstart(self, session):
173
175
self ._report .table_header = _fix_py (headers )
174
176
175
177
self ._report .running_state = "started"
176
- self ._generate_report ()
178
+ if self ._config .getini ("generate_report_on_test" ):
179
+ self ._generate_report ()
177
180
178
181
@pytest .hookimpl (trylast = True )
179
182
def pytest_sessionfinish (self , session ):
@@ -184,6 +187,8 @@ def pytest_sessionfinish(self, session):
184
187
session = session ,
185
188
)
186
189
self ._report .running_state = "finished"
190
+ suite_stop_time = time .time ()
191
+ self ._report .total_duration = suite_stop_time - self ._suite_start_time
187
192
self ._generate_report ()
188
193
189
194
@pytest .hookimpl (trylast = True )
@@ -223,8 +228,6 @@ def pytest_runtest_logreport(self, report):
223
228
else :
224
229
self ._reports [report .nodeid ][key ] = [report ]
225
230
226
- self ._report .total_duration += report .duration
227
-
228
231
finished = report .when == "teardown" and report .outcome != "rerun"
229
232
if not finished :
230
233
return
0 commit comments