Skip to main content

CircleCI PyPI version

pytest-shard

Shards tests based on a hash of their test name enabling easy parallelism across machines, suitable for a wide variety of continuous integration services. Tests are split at the finest level of granularity, individual test cases, enabling parallelism even if all of your tests are in a single file (or even single parameterized test method).

Features

pytest-shard aims for simplicity. When installed, simply run:

$ pytest --shard-id=I --num-shards=N

where I is the index of this shard and N the total number of shards. For example, to split tests across two machines:

# On machine 1:
$ pytest --shard-id=0 --num-shards=2
# On machine 2:
$ pytest --shard-id=1 --num-shards=2

The intended use case is for continuous integration services that allow you to run jobs in parallel. For CircleCI, enable parallelism and then use:

pytest --shard-id=${CIRCLE_NODE_INDEX} --num-shards=${CIRCLE_NODE_TOTAL}

On Travis, you must define the environment variables explicitly, but can use a similar approach.

Alternatives

pytest-xdist allows you to parallelize tests across cores on a single machine, and can also schedule tests on a remote machine. I use pytest-shard to split tests across CI workers, and pytest-xdist to parallelize across CPU cores within each worker.

pytest-shard does not take into account the run time of tests, which can lead to suboptimal allocations. pytest-circleci-parallelized uses test run time, but can only split at the granularity of classes, and is specific to CircleCI.

Please open a PR if there are other promising alternatives that I have overlooked.

Installation

You can install pytest-shard via pip:

$ pip install pytest-shard

Contributions

Contributions are welcome. Test may be run using tox.

License

This software is MIT licensed.

Release files for pytest-shard 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytest-shard 0.1.2
File Size Uploaded
pytest-shard-0.1.2.tar.gz 3.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytest-shard 0.1.2
File Interpreter ABI Platform
pytest_shard-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 8.2 kB

Release files / pytest-shard-0.1.2.tar.gz

Download URL pytest-shard-0.1.2.tar.gz
Size 3.6 kB
Tags Source
SHA-256 checksum
How to use checksums
b86a967fbfd1c8e50295095ccda031b7e890862ee06531d5142844f4c1d1cd67
BLAKE2b-256 checksum
How to use checksums
c6ca3efa6f3b84dab83220db45997e785be726684c2c2c4267bffb7d80101c7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

Release files / pytest_shard-0.1.2-py3-none-any.whl

Download URL pytest_shard-0.1.2-py3-none-any.whl
Size 4.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
407a1df385cebe1feb9b4d2e7eeee8b044f8a24f0919421233159a17c59be2b9
BLAKE2b-256 checksum
How to use checksums
657adbeb4c54e9fc3b59622f410091365f354a69cda1af10c3b83ac0ca6e6f4f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page