Skip to main content

Group Tox, Nox, etc environments into stages, run them in parallel

Project description

Run Tox tests in groups, stopping on errors

The test-stages library provides command-line tools that wrap Python test environment runners such as Tox or Nox, invoking them so as the various tests are run in parallel, in groups, as specified on the command line. This allows the fastest tests to be run first, and the slower ones to only be started if it makes sense (e.g. if tools like ruff or flake8 did not uncover any trivial syntax errors).

The tox-stages tool runs Tox with the specified groups of test environments, stopping if any of the tests in a group should fail. This allows quick static check tools like e.g. ruff to stop the testing process early, and also allows scenarios like running all the static check tools before the package's unit or functional tests to avoid unnecessary failures on simple errors.

The syntax for grouping the test environments to be run is described in the parse-stages library's documentation.

Running Tox tests in groups

The tox-stages tool may be invoked with a list of stages specified on the command line:

tox-stages run @check @tests

If the tox-stages run command is invoked without any stage specifications, the tool looks for the stages list of strings in the [tool.test-stages] section of the pyproject.toml file:

stages = ["ruff and not @manual", "@check", "@tests"]


The test-stages library is developed by Peter Pentchev in a GitLab repository.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

test_stages-0.1.6.tar.gz (24.3 kB view hashes)

Uploaded source

Built Distribution

test_stages-0.1.6-py3-none-any.whl (10.9 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page