64 lines
1.8 KiB
ReStructuredText
64 lines
1.8 KiB
ReStructuredText
pytest-xdist
|
|
============
|
|
|
|
The `pytest-xdist`_ plugin extends pytest with new test execution modes, the most used being distributing
|
|
tests across multiple CPUs to speed up test execution::
|
|
|
|
pytest -n auto
|
|
|
|
With this call, pytest will spawn a number of workers processes equal to the number of available CPUs, and distribute
|
|
the tests randomly across them.
|
|
|
|
.. note::
|
|
Due to how pytest-xdist is implemented, the ``-s/--capture=no`` option does not work.
|
|
|
|
|
|
Installation
|
|
------------
|
|
|
|
Install the plugin with::
|
|
|
|
pip install pytest-xdist
|
|
|
|
|
|
To use ``psutil`` for detection of the number of CPUs available, install the ``psutil`` extra::
|
|
|
|
pip install pytest-xdist[psutil]
|
|
|
|
Features
|
|
--------
|
|
|
|
* Test run :ref:`parallelization`: tests can be executed across multiple CPUs or hosts.
|
|
This allows to speed up development or to use special resources of :ref:`remote machines`.
|
|
|
|
* ``--looponfail``: run your tests repeatedly in a subprocess. After each run
|
|
pytest waits until a file in your project changes and then re-runs
|
|
the previously failing tests. This is repeated until all tests pass
|
|
after which again a full run is performed.
|
|
|
|
* :ref:`Multi-Platform` coverage: you can specify different Python interpreters
|
|
or different platforms and run tests in parallel on all of them.
|
|
|
|
Before running tests remotely, ``pytest`` efficiently "rsyncs" your
|
|
program source code to the remote place.
|
|
You may specify different Python versions and interpreters. It does not
|
|
installs/synchronize dependencies however.
|
|
|
|
**Note**: this mode exists mostly for backward compatibility, as modern development
|
|
relies on continuous integration for multi-platform testing.
|
|
|
|
|
|
|
|
.. toctree::
|
|
:maxdepth: 2
|
|
:caption: Contents:
|
|
|
|
distribution
|
|
subprocess
|
|
boxed
|
|
remote
|
|
crash
|
|
how-to
|
|
how-it-works
|
|
changelog
|