未验证 提交 b186b403 编写于 作者: L Lukáš Doktor

Merging pull request 2979

Signed-off-by: NLukáš Doktor <ldoktor@redhat.com>

* https://github.com/avocado-framework/avocado:
  plugins.xunit: Format 'time' with 3 decimal places
...@@ -47,11 +47,15 @@ class XUnitResult(Result): ...@@ -47,11 +47,15 @@ class XUnitResult(Result):
def _get_attr(self, container, attrib): def _get_attr(self, container, attrib):
return self._escape_attr(container.get(attrib, self.UNKNOWN)) return self._escape_attr(container.get(attrib, self.UNKNOWN))
@staticmethod
def _format_time(time):
return "{:.3f}".format(float(time))
def _create_testcase_element(self, document, state): def _create_testcase_element(self, document, state):
testcase = document.createElement('testcase') testcase = document.createElement('testcase')
testcase.setAttribute('classname', self._get_attr(state, 'class_name')) testcase.setAttribute('classname', self._get_attr(state, 'class_name'))
testcase.setAttribute('name', self._get_attr(state, 'name')) testcase.setAttribute('name', self._get_attr(state, 'name'))
testcase.setAttribute('time', self._get_attr(state, 'time_elapsed')) testcase.setAttribute('time', self._format_time(self._get_attr(state, 'time_elapsed')))
return testcase return testcase
def _create_failure_or_error(self, document, test, element_type, def _create_failure_or_error(self, document, test, element_type,
...@@ -95,7 +99,7 @@ class XUnitResult(Result): ...@@ -95,7 +99,7 @@ class XUnitResult(Result):
testsuite.setAttribute('errors', self._escape_attr(result.errors + result.interrupted)) testsuite.setAttribute('errors', self._escape_attr(result.errors + result.interrupted))
testsuite.setAttribute('failures', self._escape_attr(result.failed)) testsuite.setAttribute('failures', self._escape_attr(result.failed))
testsuite.setAttribute('skipped', self._escape_attr(result.skipped + result.cancelled)) testsuite.setAttribute('skipped', self._escape_attr(result.skipped + result.cancelled))
testsuite.setAttribute('time', self._escape_attr(result.tests_total_time)) testsuite.setAttribute('time', self._escape_attr(self._format_time(result.tests_total_time)))
testsuite.setAttribute('timestamp', self._escape_attr(datetime.datetime.now().isoformat())) testsuite.setAttribute('timestamp', self._escape_attr(datetime.datetime.now().isoformat()))
document.appendChild(testsuite) document.appendChild(testsuite)
for test in result.tests: for test in result.tests:
......
...@@ -58,7 +58,7 @@ class xUnitSucceedTest(unittest.TestCase): ...@@ -58,7 +58,7 @@ class xUnitSucceedTest(unittest.TestCase):
"job-2018-11-28T16.27-8fef221/job.log") "job-2018-11-28T16.27-8fef221/job.log")
self.test1 = SimpleTest(job=self.job, base_logdir=self.tmpdir) self.test1 = SimpleTest(job=self.job, base_logdir=self.tmpdir)
self.test1._Test__status = 'PASS' self.test1._Test__status = 'PASS'
self.test1.time_elapsed = 1.23 self.test1.time_elapsed = 678.23689
def tearDown(self): def tearDown(self):
errs = [] errs = []
...@@ -88,8 +88,14 @@ class xUnitSucceedTest(unittest.TestCase): ...@@ -88,8 +88,14 @@ class xUnitSucceedTest(unittest.TestCase):
except Exception as details: except Exception as details:
raise ParseXMLError("Error parsing XML: '%s'.\nXML Contents:\n%s" % (details, xml)) raise ParseXMLError("Error parsing XML: '%s'.\nXML Contents:\n%s" % (details, xml))
self.assertTrue(dom) self.assertTrue(dom)
els = dom.getElementsByTagName('testsuite')
self.assertEqual(len(els), 1)
self.assertEqual(els[0].attributes['time'].value, '678.237')
els = dom.getElementsByTagName('testcase') els = dom.getElementsByTagName('testcase')
self.assertEqual(len(els), 1) self.assertEqual(len(els), 1)
self.assertEqual(els[0].attributes['time'].value, '678.237')
junit_xsd = os.path.abspath(os.path.join(os.path.dirname(__file__), junit_xsd = os.path.abspath(os.path.join(os.path.dirname(__file__),
os.path.pardir, ".data", os.path.pardir, ".data",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册