CheckOps
Nox
Nox is an Apache-2.0 Python test automation tool that defines sessions in a Python file (noxfile.py), running tests across interpreters and dependency sets in isolated environments.
Latest public signals
Not refreshed yet. Refresh reads the public site and, when the entry has a GitHub repository, the latest release.
Introduction
Nox offers flexible test automation for Python. Where tox uses declarative configuration files, Nox uses a noxfile.py, where each session is a Python function decorated with @nox.session. That makes conditional logic, loops and shared helpers natural, which many teams find easier to maintain for complex workflows.
Inside a session you call session.install(...) to add dependencies and session.run(...) to execute commands. Sessions can be parameterised by Python version (python=["3.11", "3.12"]) or with @nox.parametrize for dependency matrices. nox -s tests runs one session, nox -l lists sessions, and -R/--reuse-existing-virtualenvs speeds up repeated runs. Nox supports several virtual environment backends, including virtualenv, venv, conda and uv. It uses calendar versioning; release 2026.10.20 came out on 20 October 2026. The project is maintained under the wntrblm organisation.
The source code is at wntrblm/nox on GitHub under the Apache-2.0 licence, with about 1,600 stars; the most recent commit was on 6 November 2026.
Because sessions are code, it is easy to share helper functions between sessions or skip work based on environment variables.
Features
- Python configuration: Sessions are plain Python functions.
- Parameterisation: Run sessions across interpreters and dependency versions.
- Multiple backends: virtualenv, venv, conda and uv.
- Session selection: Run, list and tag sessions from the CLI.
Pros
- Free to use: Open source under the Apache-2.0 licence, so the core tool costs nothing to use.
- Actively maintained: The repository had commits as recent as 6 November 2026.
Cons
- More code to maintain: Flexibility means noxfiles can grow complex.
- Smaller plugin ecosystem: Fewer plugins than tox.
Usage and Links (Example)
# noxfile.py
import nox
@nox.session(python=["3.11", "3.12", "3.13"])
def tests(session):
session.install("-e", ".", "pytest", "coverage")
session.run("coverage", "run", "-m", "pytest", *session.posargs)
@nox.session
def lint(session):
session.install("ruff")
session.run("ruff", "check", "src", "tests")
pip install nox
nox -s tests
nox -s lint
Resources:
Pricing
Nox is free and open source under the Apache-2.0 licence.
Recommended for?
- Python teams who prefer code over configuration for test automation.
- Projects with complex, conditional test workflows.
Conclusion
Nox brings the power of Python to test automation, a strong alternative to tox when flexibility matters.
Alternatives
Other tools on CheckOps that cover similar ground. Open a page, or compare one with Nox side by side.
Ttoxtox is an MIT-licensed command-line test automation tool for Python that creates isolated environments to run tests across Python versions and dependency sets, locally and in CI.Compare with Nox- Ppytestpytest is the usual Python test runner: plain asserts, fixtures, parametrization, and a large plugin set.Compare with Nox
CCoverage.pyCoverage.py is the standard Apache-2.0 code coverage tool for Python, measuring line and branch coverage and producing terminal, HTML, XML, JSON and LCOV reports; pytest-cov builds on it.Compare with Nox
PPython unittestunittest is Python's built-in xUnit-style testing framework, with TestCase classes, fixtures, test discovery, subtests, async test cases and the unittest.mock library, available in every Python install.Compare with Nox
HHypothesisHypothesis is the MPL-2.0 property-based testing library for Python: describe the range of inputs, let it generate cases including edge cases, and get the simplest failing example when a property breaks.Compare with Nox
Mmutmutmutmut is a BSD-3-Clause mutation testing tool for Python that changes your code in small ways and reports which mutants your tests fail to kill, with a terminal UI for browsing results.Compare with Nox