New issue 598: Ability to randomize testing order https://bitbucket.org/hpk42/pytest/issue/598/ability-to-randomize-testing-order
liori: I have two types of tests: CPU-bound and IO-bound. When playing with `xdist` I realized that these tests tend to cluster, ie. there's a huge block of CPU-bound tests, then a block of IO-bound tests, etc. I assumed that if I could interleave these blocks of tests, the test suite will execute faster. So I hacked up `pytest` to hardcode a simple randomization scheme; I changed `pytest.main.Session.perform_collect` to have the following code: ``` #!python def perform_collect(self, args=None, genitems=True): hook = self.config.hook try: items = self._perform_collect(args, genitems) hook.pytest_collection_modifyitems(session=self, config=self.config, items=items) finally: import random random.Random(42).shuffle(self.items) hook.pytest_collection_finish(session=self) return items ``` Before this change my test suite executed with `py.test -n 4` took 60 seconds to complete. Now it's about 40 seconds, which means I saved ~1/3 of the time. I hope this proves that such an option would be useful. _______________________________________________ pytest-commit mailing list pytest-commit@python.org https://mail.python.org/mailman/listinfo/pytest-commit