Skip to main content

No project description provided

Project description

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.

Project details


Download files

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

Source Distribution

pytest-shard-0.1.2.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

pytest_shard-0.1.2-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file pytest-shard-0.1.2.tar.gz.

File metadata

  • Download URL: pytest-shard-0.1.2.tar.gz
  • Upload date:
  • Size: 3.6 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for pytest-shard-0.1.2.tar.gz
Algorithm Hash digest
SHA256 b86a967fbfd1c8e50295095ccda031b7e890862ee06531d5142844f4c1d1cd67
MD5 7ddbc1217591bc399b8f14fafc0f3c71
BLAKE2b-256 c6ca3efa6f3b84dab83220db45997e785be726684c2c2c4267bffb7d80101c7f

See more details on using hashes here.

File details

Details for the file pytest_shard-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pytest_shard-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for pytest_shard-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 407a1df385cebe1feb9b4d2e7eeee8b044f8a24f0919421233159a17c59be2b9
MD5 464dfb0e0c3c1fbffdaa193ca8a34610
BLAKE2b-256 657adbeb4c54e9fc3b59622f410091365f354a69cda1af10c3b83ac0ca6e6f4f

See more details on using hashes here.

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