xunitparser reads a JUnit/XUnit XML file and maps it to Python objects. It tries to use the objects available in the standard unittest module.


import xunitparser
ts, tr = xunitparser.parse(open('/path/to/unit.xml'))

ts is a TestSuite class, containing TestCase classes. tr is a TestResult class.

You can change the classes used (though they probably would not work unless they inherit from the xunitparser ones) by using your own xunitparser.Parser class and changing the *_CLASS variables.

Some helpful properties are added to the TestCase class:

for tc in ts:
    print('Class %s, method %s' % (tc.classname, tc.methodname))
    if tc.good:
        print('went well...', 'but did not run.' if tc.skip else '')
        print('went wrong.')

For more, please read the source code - it is very minimal. The classes also inherit from the unittest module so it is actually a good reference of what you can do with xunitparser.


  • 1.3.0
    • Multiple results in a single TestCase are seen as one. The previous way was never validated by real-life examples.
    • Handle system-out / system-err at the testsuite level


Contributions can be sent in the form of git patches, to