• Fixed
    • For junitxml plugin use test module in place of classname if no classname exists
  • Features
    • Add code to enable plugins to documentation
  • Dropped support for python 3.3


  • Fixed
    • Respect fail_under in converage config
    • Avoid infinite recursion when loading setuptools from zipped egg
    • Manpage now renders reproducably
    • MP doc build now reproducable
  • Features
    • Setup tools invocation now handles coverage
  • Notes
    • Running nose2 via setuptools will now trigger CreateTestsEvent and CreatedTestSuiteEvent


  • Fixed
    • Tests failing due to .coveragerc not in MANIFEST

Added support for python 3.6.


  • Fixed
    • Proper indentation of test with docstring in layers
    • MP plugin now calls startSubprocess in subprocess


(Built but never deployed.)

  • Fixed
    • Automatically create .coverage file during coverage reporting
    • Better handling of import failures
  • Developer workflow changes
    • Add Makefile to enable “quickstart” workflow
    • Removed and


  • BREAKING Dropped unsupported Python 2.6, 3.2, 3.3
    • Added support for Python 3.4, 3.5
    • nose2.compat is removed because it is no longer needed. If you have from nose2.compat import unittest in your code, you will need to replace it with import unittest.
  • Replace cov-core with coverage plugin
  • Fixed
    • Prevent crashing from UnicodeDecodeError
    • Fix unicode stream encoding
  • Features
    • Add layer fixture events and hooks
    • junit-xml: add logs in “system-out”
    • Give better error when cannot import a testname
    • Give full exc_info to loader.failedLoadTests
    • Better errors when tests fail to load
    • Reduce the processes created in the MP plugin if there are not enough tests.
    • Allow combination of MP and OutputBuffer plugins on Python 3


  • Fixed
    • fix the coverage plugin tests for coverage==3.7.1


  • Fixed
    • missing test files added to package.


  • Added
    • Junit XML report support properties
    • Improve test coverage
    • Improve CI
    • Add a createdTestSuite event, fired after test loading
  • Fixed
    • Junit-xml plugin fixed on windows
    • Ensure tests are importable before trying to load them
    • Fail test instead of skipping it, when setup fails
    • When test loading fails, print the traceback
    • Make the collect plugin work with layers
    • Fix coverage plugin to take import-time coverage into account


  • Added
    • Add with_setup and with_teardown decorators to set the setup & teardown on a function
    • dundertests plugin to skip tests with __test__ == False
    • Add cartesian_params decorator
    • Add coverage plugin
    • Add EggDiscoveryLoader for discovering tests within Eggs
    • Support params with such
    • such errors early if Layers plugin is not loaded
    • Include logging output in junit XML
  • Fixed
    • Such DSL ignores two such.A with the same description
    • Record skipped tests as ‘skipped’ instead of ‘skips’
    • Result output failed on unicode characters
    • Fix multiprocessing plugin on Windows
    • Allow use of nose2.main() from within a test module
    • Ensure plugins write to the event stream
    • multiprocessing could lock master proc and fail to exit
    • junit report path was sensitive to changes in cwd
    • Test runs would crash if a TestCase __init__ threw an exception
    • Plugin failures no longer crash the whole test run
    • Handle errors in test setup and teardown
    • Fix reporting of xfail tests
    • Log capture was waiting too long to render mutable objects to strings
    • Layers plugin was not running testSetUp/testTearDown from higher such layers


  • Feature: Added start-dir config option. Thanks to Stéphane Klein.
  • Bug: Fixed broken import in Thanks to Shaun Crampton.
  • Bug: Fixed processes command line option in mp plugin. Thanks to Tim Sampson.
  • Bug: Fixed handling of class fixtures in multiprocess plugin. Thanks to Tim Sampson.
  • Bug: Fixed intermittent test failure caused by nondeterministic key ordering. Thanks to Stéphane Klein.
  • Bug: Fixed syntax error in printhooks. Thanks to Tim Sampson.
  • Docs: Fixed formatting in changelog. Thanks to Omer Katz.
  • Docs: Added help text for verbose flag. Thanks to Tim Sampson.
  • Docs: Fixed typos in docs and examples. Thanks to Tim Sampson.
  • Docs: Added badges to README. Thanks to Omer Katz.
  • Updated six version requirement to be less Restrictive. Thanks to Stéphane Klein.
  • Cleaned up numerous PEP8 violations. Thanks to Omer Katz.


  • Bug: fixed DeprecationWarning for compiler package on python 2.7. Thanks Max Arnold.
  • Bug: fixed lack of timing information in junitxml exception reports. Thanks Viacheslav Dukalskiy.
  • Bug: cleaned up junitxml xml output. Thanks Philip Thiem.
  • Docs: noted support for python 3.3. Thanks Omer Katz for the bug report.


  • Bug: fixed broken interaction between attrib and layers plugins. They can now be used together. Thanks @fajpunk.
  • Bug: fixed incorrect calling order of layer setup/teardown and test setup/test teardown methods. Thanks again @fajpunk for tests and fixes.


  • Bug: fixed sort key generation for layers.


  • Bug: fixed packaging for non-setuptools, pre-python 2.7. Thanks to fajpunk for the patch.


  • Bug: fixed unpredictable ordering of layer tests.
  • Added uses method to such.Scenario to allow use of externally-defined layers in such DSL tests.


  • Fixed packaging bug.


  • New plugin: Added nose2.plugins.layers to support Zope testing style fixture layers.
  • New tool: Added, a spec-like DSL for writing tests with layers.
  • New plugin: Added nose2.plugins.loader.loadtests to support the unittest2 load_tests protocol.


  • New plugin: Added to support distributing test runs across multiple processes.
  • New plugin: Added nose2.plugins.testclasses to support loading tests from ordinary classes that are not subclasses of unittest.TestCase.
  • The default script target was changed from nose2.main to The former may still be used for running a single module of tests, unittest-style. The latter ignores the module argument. Thanks to @dtcaciuc for the bug report (#32).
  • nose2.main.PluggableTestProgram now accepts an extraHooks keyword argument, which allows attaching arbitrary objects to the hooks system.
  • Bug: Fixed bug that caused Skip reason to always be set to None.


  • New plugin: Added nose2.plugins.junitxml to support jUnit XML output.
  • New plugin: Added nose2.plugins.attrib to support test filtering by attributes.
  • New hook: Added afterTestRun hook, moved result report output calls to that hook. This prevents plugin ordering issues with the stopTestRun hook (which still exists, and fires before afterTestRun).
  • Bug: Fixed bug in loading of tests by name that caused ImportErrors to be silently ignored.
  • Bug: Fixed missing __unittest flag in several modules. Thanks to Wouter Overmeire for the patch.
  • Bug: Fixed module fixture calls for function, generator and param tests.
  • Bug: Fixed passing of command-line argument values to list options. Before this fix, lists of lists would be appended to the option target. Now, the option target list is extended with the new values. Thanks to memedough for the bug report.


Initial release.