fixed html reporting issue in validation suite.

This commit is contained in:
2026-02-14 12:02:02 +01:00
parent 899857767a
commit a2af730894
2 changed files with 41 additions and 32 deletions

View File

@@ -36,6 +36,10 @@ class TestItemReport(TestItem):
success = TestValue.SUCCESS
for rep in reports:
rep.exec(self.report.db_connection, rep_name, no_header=True)
try:
rep.exec(self.report.db_connection, rep_name, no_header=True)
except Exception as e:
print(f"Error reporting '{rep.type}': {e}")
self.result.set(success)

View File

@@ -1,5 +1,6 @@
from lxml import (etree, html)
import lxml
import html
import interpreter.test_report.report_export as rpe
import interpreter.test_report.test_report as tr
import interpreter.utils.constants as cst
@@ -13,60 +14,64 @@ class ReportExportHTML(rpe.ReportExport):
self.create_base()
self.process_tests()
with open(self._file_name, 'w') as f:
f.write(html.tostring(self.root, pretty_print=True).decode())
f.write(lxml.html.tostring(self.root, pretty_print=True).decode())
def testsIterate(self, row):
super().testsIterate(row)
rdata = self.extract_info(row)
trow = etree.SubElement(self.table, 'tr')
for r in self.ROW_TEXTS:
rh = etree.SubElement(trow, 'td')
if r[self.KEY_INDEX] == self.KEY_DURATION:
rh.text = '{:.4f}'.format(rdata[r[self.KEY_INDEX]])
else:
rh.text = rdata[r[self.KEY_INDEX]]
trow = lxml.etree.SubElement(self.table, 'tr')
try:
for r in self.ROW_TEXTS:
rh = lxml.etree.SubElement(trow, 'td')
if r[self.KEY_INDEX] == self.KEY_DURATION:
rh.text = '{:.4f}'.format(rdata[r[self.KEY_INDEX]])
else:
rh.text = rdata[r[self.KEY_INDEX]]
if rdata[self.KEY_LOG] != '':
h2 = lxml.etree.SubElement(self.logsection, 'h3')
h2.text = rdata[self.KEY_TITLE]
for l in rdata[self.KEY_LOG].splitlines():
p = lxml.etree.SubElement(self.logsection, 'p')
p.text = html.escape(l)
except ValueError as e:
print(f"Error reporting html: {e}")
if rdata[self.KEY_LOG] != '':
h2 = etree.SubElement(self.logsection, 'h3')
h2.text = rdata[self.KEY_TITLE]
for l in rdata[self.KEY_LOG].splitlines():
p = etree.SubElement(self.logsection, 'p')
p.text = l
def create_base(self):
repname = self.header[cst.DB_TEST_SET_NAME]
if self.name != '':
repname = self.name
self.root = etree.Element('html', lang='en')
head = etree.SubElement(self.root, 'head')
title = etree.SubElement(head, 'title')
self.root = lxml.etree.Element('html', lang='en')
head = lxml.etree.SubElement(self.root, 'head')
title = lxml.etree.SubElement(head, 'title')
title.text = repname
self.body = etree.SubElement(self.root, 'body')
h1 = etree.SubElement(self.body, 'h1')
self.body = lxml.etree.SubElement(self.root, 'body')
h1 = lxml.etree.SubElement(self.body, 'h1')
h1.text = repname
div = etree.SubElement(self.body, 'div')
h2 = etree.SubElement(div, 'h2')
div = lxml.etree.SubElement(self.body, 'div')
h2 = lxml.etree.SubElement(div, 'h2')
h2.text = 'Test conditions'
for k in self.HEADER_TEXTS.keys():
if k in self.header.keys():
h = etree.SubElement(div, 'h3')
h = lxml.etree.SubElement(div, 'h3')
h.text = self.HEADER_TEXTS[k]
p = etree.SubElement(div, 'p')
p = lxml.etree.SubElement(div, 'p')
p.text = self.header[k]
div = etree.SubElement(self.body, 'div')
h2 = etree.SubElement(div, 'h2')
div = lxml.etree.SubElement(self.body, 'div')
h2 = lxml.etree.SubElement(div, 'h2')
h2.text = 'Test results'
self.table = etree.SubElement(self.body, 'table')
row = etree.SubElement(self.table, 'tr')
self.table = lxml.etree.SubElement(self.body, 'table')
row = lxml.etree.SubElement(self.table, 'tr')
for r in self.ROW_TEXTS:
rh = etree.SubElement(row, 'th')
rh = lxml.etree.SubElement(row, 'th')
rh.text = r[self.TEXT_INDEX]
self.logsection = etree.SubElement(self.body, 'div')
h2 = etree.SubElement(self.logsection, 'h2')
self.logsection = lxml.etree.SubElement(self.body, 'div')
h2 = lxml.etree.SubElement(self.logsection, 'h2')
h2.text = 'Logs'