adamgleave / pytest-shard Goto Github PK
View Code? Open in Web Editor NEWShard tests to support parallelism across multiple machines.
License: MIT License
Shard tests to support parallelism across multiple machines.
License: MIT License
Hi,
I'd love to get the latest PR into our CI system. Any chance you could prepare a new release and upload that to Pypi?
Thanks a lot in advance!
It only says how to define shard numbers.
But how to tell it to submit jobs to the grid?
How to specify the submission command?
This command
$ pytest --shard-id=I --num-shards=N
only tells pytest what shard IDs are, but not how to submit individual jobs.
Thank you for the great project!
I wanted to ask couple of related questions.
hash(item.nodeid)
doesn't give a good distribution on my workloads. I.e. if I have 8 tests, I often end up with one shard getting 6 and another shard getting 2.item.nodeid
has an absolute path to the test file, so it could be machine-specific (depending on the implementation). This makes it possible for a single test to run twice and vice-verse for a test not to be run at all.So my question is -- can we use a simple round-robin algorithm? Something like
def filter_items_by_shard(
items: Iterable[nodes.Node], shard_id: int, num_shards: int
) -> Sequence[nodes.Node]:
"""Computes `items` that should be tested in `shard_id` out of `num_shards` total shards."""
return [item for idx, item in enumerate(items) if idx % num_shards == shard_id]
Is there any downside in it?
My understanding is that pytest
has a deterministic order for the items, so it should be just fine.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.