Warning
this is a extraction of the xdist --forked module, future maintenance beyond the bare minimum is not planned until a new maintainer is found.
This plugin does not work on Windows because there's no fork
support.
--forked
: run each test in a forked subprocess to surviveSEGFAULTS
or otherwise dying processes.
Install the plugin with:
pip install pytest-forked
or use the package in develope/in-place mode with a checkout of the pytest-forked repository :
pip install -e .
If you have tests involving C or C++ libraries you might have to deal with tests crashing the process. For this case you may use the boxing options:
pytest --forked
which will run each test in a subprocess and will report if a test crashed the process. You can also combine this option with running multiple processes via pytest-xdist to speed up the test run and use your CPU cores:
pytest -n3 --forked
this would run 3 testing subprocesses in parallel which each create new forked subprocesses for each test.
You can also fork for individual tests:
@pytest.mark.forked
def test_with_leaky_state():
run_some_monkey_patches()
This test will be unconditionally boxed, regardless of CLI flag.