nose2
unittest with plugins
What it is and what it does
nose2 is a test runner built on top of Python's standard unittest framework, designed to make writing and running tests more convenient. It automatically discovers test files and functions, runs them, and provides enhanced output formatting and assertion introspection. The package adds value through plugins and tools like parametrized test decorators that reduce boilerplate compared to raw unittest.
Unlike its predecessor nose, nose2 is a distinct project that does not aim for full backward compatibility. It requires Python 3.9 or later and is actively maintained. The project acknowledges that pytest is a larger, more mature alternative with a bigger community, but nose2 remains useful for teams already invested in unittest-style tests who want incremental improvements without a full framework migration.
Use it for:
- Run unittest-style tests across a project with automatic discovery and minimal configuration.
- Add parametrized test support to unittest code using nose2's @params decorator.
- Generate detailed assertion failure output with --pretty-assert for easier debugging.
- Integrate testing into CI/CD pipelines where unittest compatibility is required.
- Migrate from nose to a maintained test runner without rewriting all tests.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
nose2 is a test runner that extends Python's unittest framework with plugins and convenience tools for discovering and running tests.
Yes, if you are already using unittest and want a low-friction upgrade with plugins and better output. The package has no dependencies, is actively maintained, and supports current Python versions. However, if starting a new project, pytest is a stronger choice given its larger community and maintainer base—nose2 is best for incremental improvement of existing unittest codebases.
Install
nose2 on PyPI
pip
pip install nose2uv
uv add nose2poetry
poetry add nose2Installing nose2
Before you install
Low install friction with no runtime dependencies. Actively maintained with recent commits and a release within the last 6 months; supports current Python versions from 3.9 onward.
License in practice
BSD-2-Clause is permissive, allowing commercial and private use with minimal restrictions—suitable for most projects.
Quickstart
pip install nose2
# in test_example.py
import unittest
class TestExample(unittest.TestCase):
def test_pass(self):
self.assertEqual(1, 1)
# Run tests:
# nose2 -v
Requires Python 3.9 or later; Python 2 is no longer supported.
Verify before relying
- Whether nose2's plugin ecosystem is actively maintained and what plugins are available beyond the core distribution.
- Performance characteristics compared to unittest or pytest for large test suites.
Package facts
| License | BSD-2-Clause (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | actively maintained — 165 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 797,172/month — #5,031 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: nose2-0.16.0-py3-none-any.whl
Keywords: testing, tests, unittest
Tags
More Libraries packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
pluggyPluggy provides a plugin system that lets you…
permissive · top 100 on PyPI
python-dateutilProvides parsing, arithmetic, and recurrence…
permissive · top 100 on PyPI
sixSix provides utility functions to write Python…
permissive · top 100 on PyPI
pytestpytest is a testing framework that lets you…
permissive · top 100 on PyPI
nosenose extends unittest with automatic test…
copyleft · top 5,000 on PyPI
nose-py3nose-py3 extends unittest with automatic test…
copyleft · top 15,000 on PyPI
pynosepynose is an updated test runner that extends…
copyleft · top 5,000 on PyPI
html-testRunnerA unittest test runner that generates…
permissive · top 15,000 on PyPI
parameterizedParameterized testing decorator that works with…
permissive · top 5,000 on PyPI
unittest2Backports unittest features from Python 2.7 and…
permissive · top 5,000 on PyPI
unittest-parametrizeAdds parametrization support to unittest…
permissive · top 15,000 on PyPI
pytest-subtestsAdds subTest() support to pytest, allowing…
permissive · top 5,000 on PyPI
parametrizeProvides a `@parametrize` decorator that works…
permissive · top 15,000 on PyPI
django-noseIntegrates the nose test runner into Django's…
permissive · top 15,000 on PyPI