26 xml_writer = XmlWriter(output, usage=
'xunit')
42 stats = suite.statistics
43 attrs = {
'name': suite.name,
44 'tests': f
'{stats.total}',
46 'failures': f
'{stats.failed}',
47 'skipped': f
'{stats.skipped}',
50 self.
_writer_writer.start(
'testsuite', attrs)
53 if suite.metadata
or suite.doc:
54 self.
_writer_writer.start(
'properties')
56 self.
_writer_writer.element(
'property', attrs={
'name':
'Documentation',
'value': suite.doc})
57 for meta_name, meta_value
in suite.metadata.items():
58 self.
_writer_writer.element(
'property', attrs={
'name': meta_name,
'value': meta_value})
59 self.
_writer_writer.end(
'properties')
60 self.
_writer_writer.end(
'testsuite')
63 self.
_writer_writer.start(
'testcase',
64 {
'classname': test.parent.longname,
68 self.
_writer_writer.element(
'failure', attrs={
'message': test.message,
69 'type':
'AssertionError'})
71 self.
_writer_writer.element(
'skipped', attrs={
'message': test.message,
72 'type':
'SkipExecution'})
73 self.
_writer_writer.end(
'testcase')
76 return format(millis / 1000,
'.3f')
93 return f
'{stime[:4]}-{stime[4:6]}-{stime[6:8]}T{stime[9:22]}000'
Provides an xUnit-compatible result file.
def _starttime_to_isoformat(self, stime)
def visit_errors(self, errors)
def visit_statistics(self, stats)
def end_result(self, result)
def end_suite(self, suite)
def visit_test(self, test)
def __init__(self, xml_writer)
def start_suite(self, suite)
def visit_keyword(self, kw)
def _time_as_seconds(self, millis)
def __init__(self, execution_result)