Registered 2006-10-10 by Subunit Developers

Subunit is a streaming protocol for test results. The protocol is a binary encoding that is easily generated and parsed. By design all the components of the protocol conceptually fit into the xUnit TestCase->TestResult interaction.

Subunit comes with command line filters to process a subunit stream and
language bindings for python, C, C++ and shell. Bindings are easy to write
for other languages.

A number of useful things can be done easily with subunit:
 * Test aggregation: Tests run separately can be combined and then
   reported/displayed together. For instance, tests from different languages
   can be shown as a seamless whole.
 * Test archiving: A test run may be recorded and replayed later.
 * Test isolation: Tests that may crash or otherwise interact badly with each
   other can be run seperately and then aggregated, rather than interfering
   with each other.
 * Grid testing: subunit can act as the necessary serialisation and
   deserialiation to get test runs on distributed machines to be reported in
   real time.

Subunit supplies the following filters:
 * tap2subunit - convert perl's TestAnythingProtocol to subunit.
 * subunit2pyunit - convert a subunit stream to pyunit test results.
 * subunit2gtk - display a subunit stream in a gtk window.
 * subunit2junitxml - convert a subunit stream to a JUnit XML representation.
 * subunit-diff - diff two subunit streams.
 * subunit-filter - filter out tests from a subunit stream.
 * subunit-ls - list the tests present in a subunit stream.
 * subunit-stats - generate a summary of a subunit stream.
 * subunit-tags - add or remove tags from a stream.

A mailing list for discussion, usage and development is at - all are welcome to join.

Subunit is shipped by recent Debian and Ubuntu versions. Newer versions for Ubuntu may be available from either of the two Personal Package Archives : and

Project information

Part of:
Friends of PyUnit
Subunit Developers
Subunit Developers
Development focus:

trunk series 

Browse the code

Version control system:
Apache Licence, Simplified BSD Licence

RDF metadata

View full history Series and milestones

subunit trunk series is the current focus of development

More contributors Top contributors

All packages Packages in Distributions

All questions Latest questions


Latest version is 1.2
released on 2015-10-23

All downloads


  • 0.0.6 released on 2010-07-02
    This release of subunit fixes a number of unicode related bugs. This depends ...
  • Talk given, 0.0.5 out on 2010-01-24
    I presented on Subunit at LCA 2010 - the talk was fairly well received. We ha...
  • 0.0.5 released on 2010-01-19
    Two new features: * New filter `subunit-notify` that will show a notificati...
  • subunit paper accepted for LCA2010 on 2009-09-06
    Hope to see anyone interested in subunit in Wellington!
  • Subunit presentation at SLUG on 2009-07-31
    Slides [ ] are up fo...