# pytest-parallel
a pytest plugin for parallel and concurrent testing
## What?
This plugin makes it possible to run tests quickly using multiprocessing (parallelism) and multithreading (concurrency).
## Why?
`pytest-xdist` is great to run tests that:
1. aren't threadsafe
2. perform poorly when multithreaded
3. need state isolation
`pytest-parallel` is better for some use cases (like Selenium tests) that:
1. can be threadsafe
2. can use non-blocking IO for http requests to make it performant
3. manage little or no state in the Python environment
Put simply, `pytest-xdist` does parallelism while `pytest-parallel` does parallelism and concurrency.
## Requirements
* Python3 version [3.6+]
* Unix or Mac for `--workers`
* Unix, Mac, or Windows for `--tests-per-worker`
## Installation
`pip install pytest-parallel`
## Options
* `workers` (optional) - max workers (aka processes) to start. Can be a **positive integer or `auto`** which uses one worker per core. **Defaults to 1**.
* `tests-per-worker` (optional) - max concurrent tests per worker. Can be a **positive integer or `auto`** which evenly divides tests among the workers up to 50 concurrent tests. **Defaults to 1**.
## Examples
```bash
# runs 2 workers with 1 test per worker at a time
pytest --workers 2
# runs 4 workers (assuming a quad-core machine) with 1 test per worker
pytest --workers auto
# runs 1 worker with 4 tests at a time
pytest --tests-per-worker 4
# runs 1 worker with up to 50 tests at a time
pytest --tests-per-worker auto
# runs 2 workers with up to 50 tests per worker
pytest --workers 2 --tests-per-worker auto
```
## Notice
Beginning with Python 3.8, forking behavior is forced on macOS at the expense of safety.
Changed in version 3.8: On macOS, the spawn start method is now the default. The fork start method should be considered unsafe as it can lead to crashes of the subprocess. See bpo-33725.
[Source](https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods)
## License
MIT
Raw data
{
"_id": null,
"home_page": "https://github.com/browsertron/pytest-parallel",
"name": "pytest-parallel-39",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "",
"author": "Browsertron",
"author_email": "team@browsertron.com",
"download_url": "https://files.pythonhosted.org/packages/b9/80/2a9bac94b86c95151bf32b3fad85833b779b37384a5d50d3dfa87540f47f/pytest-parallel-39-0.1.0.tar.gz",
"platform": "",
"description": "# pytest-parallel\na pytest plugin for parallel and concurrent testing\n\n## What?\n\nThis plugin makes it possible to run tests quickly using multiprocessing (parallelism) and multithreading (concurrency).\n\n## Why?\n\n`pytest-xdist` is great to run tests that:\n 1. aren't threadsafe\n 2. perform poorly when multithreaded\n 3. need state isolation\n\n`pytest-parallel` is better for some use cases (like Selenium tests) that:\n 1. can be threadsafe\n 2. can use non-blocking IO for http requests to make it performant\n 3. manage little or no state in the Python environment\n\nPut simply, `pytest-xdist` does parallelism while `pytest-parallel` does parallelism and concurrency.\n\n## Requirements\n\n* Python3 version [3.6+]\n* Unix or Mac for `--workers`\n* Unix, Mac, or Windows for `--tests-per-worker`\n\n## Installation\n\n`pip install pytest-parallel`\n\n## Options\n\n* `workers` (optional) - max workers (aka processes) to start. Can be a **positive integer or `auto`** which uses one worker per core. **Defaults to 1**.\n* `tests-per-worker` (optional) - max concurrent tests per worker. Can be a **positive integer or `auto`** which evenly divides tests among the workers up to 50 concurrent tests. **Defaults to 1**.\n\n## Examples\n\n```bash\n# runs 2 workers with 1 test per worker at a time\npytest --workers 2\n\n# runs 4 workers (assuming a quad-core machine) with 1 test per worker\npytest --workers auto\n\n# runs 1 worker with 4 tests at a time\npytest --tests-per-worker 4\n\n# runs 1 worker with up to 50 tests at a time\npytest --tests-per-worker auto\n\n# runs 2 workers with up to 50 tests per worker\npytest --workers 2 --tests-per-worker auto\n```\n\n## Notice\n\nBeginning with Python 3.8, forking behavior is forced on macOS at the expense of safety.\n\n Changed in version 3.8: On macOS, the spawn start method is now the default. The fork start method should be considered unsafe as it can lead to crashes of the subprocess. See bpo-33725.\n\n[Source](https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods)\n\n## License\n\nMIT\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "a pytest plugin for parallel and concurrent testing",
"version": "0.1.0",
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "9a891de5e1d7440d0dafe8b74e90c737",
"sha256": "7badcc846d14321b8fe36ad22d602f756c57a68b9271503c7d538cc5b457ff6f"
},
"downloads": -1,
"filename": "pytest_parallel_39-0.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "9a891de5e1d7440d0dafe8b74e90c737",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 7011,
"upload_time": "2021-07-12T21:44:31",
"upload_time_iso_8601": "2021-07-12T21:44:31.543536Z",
"url": "https://files.pythonhosted.org/packages/6f/b3/7648a8a966f877e36e89a16840ae2b656052f096a254f90269ffd4416d9b/pytest_parallel_39-0.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "bac2c8b176fb5fd6c6449da84eb13796",
"sha256": "993da421cd08a8e6686b27f2128a1e3c4d0b52a3f1549577e56ca7d636d7f984"
},
"downloads": -1,
"filename": "pytest-parallel-39-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "bac2c8b176fb5fd6c6449da84eb13796",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 9588,
"upload_time": "2021-07-12T21:44:33",
"upload_time_iso_8601": "2021-07-12T21:44:33.020862Z",
"url": "https://files.pythonhosted.org/packages/b9/80/2a9bac94b86c95151bf32b3fad85833b779b37384a5d50d3dfa87540f47f/pytest-parallel-39-0.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-07-12 21:44:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "browsertron",
"github_project": "pytest-parallel",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"tox": true,
"lcname": "pytest-parallel-39"
}