Python testtools extension for running unittest test suites concurrently
Project description
concurrencytest
Python testtools extension for running unittest test suites concurrently.
- Development: GitHub
- Download/Install: PyPI
- License: GPLv2+
- Copyright (c) 2013-2026 Corey Goldberg
- Original code from:
- Bazaar (
bzrlib.tests.__init__.py, v2.6, copied Jun 01 2013) - Copyright (c) 2005-2011 Canonical Ltd
- Bazaar (
About
concurrencytest allows you to parallelize a unittest tests across a configurable
number of worker processes. Tests are assigned to worker processes in a round-robin
fashion.
This module provides the ConcurrentTestSuite class from testtools and the
fork_for_tests function (make_tests implementation needed to use
ConcurrentTestSuite).
You can specify the number of worker process to use when calling fork_for_tests, or
use the default concurrecy (1 process per available CPU core).
For more info about writing/running tests with the unittest testing framework, see
the official documentation.
Install from PyPI:
pip install concurrencytest
Requires:
- support for
os.fork()(Unix-like systems only) - testtools :
pip install testtools - python-subunit :
pip install python-subunit
Example:
import time
import unittest
from concurrencytest import ConcurrentTestSuite, fork_for_tests
class ExampleTestCase(unittest.TestCase):
"""Dummy tests that sleep for demo."""
def test_me_1(self):
time.sleep(0.5)
def test_me_2(self):
time.sleep(0.5)
def test_me_3(self):
time.sleep(0.5)
def test_me_4(self):
time.sleep(0.5)
runner = unittest.TextTestRunner()
# Run the tests from above sequentially
suite = unittest.TestLoader().loadTestsFromTestCase(ExampleTestCase)
runner.run(suite)
# Run same tests concurrently across 4 processes
suite = unittest.TestLoader().loadTestsFromTestCase(ExampleTestCase)
concurrent_suite = ConcurrentTestSuite(suite, fork_for_tests(4))
runner.run(concurrent_suite)
# Run same tests concurrently using 1 process per available CPU core
suite = unittest.TestLoader().loadTestsFromTestCase(ExampleTestCase)
concurrent_suite = ConcurrentTestSuite(suite, fork_for_tests())
runner.run(concurrent_suite)
Output:
.....
----------------------------------------------------------------------
Ran 4 tests in 2.002s
OK
....
----------------------------------------------------------------------
Ran 4 tests in 0.510s
OK
....
----------------------------------------------------------------------
Ran 4 tests in 0.507s
OK
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file concurrencytest-0.1.10.tar.gz.
File metadata
- Download URL: concurrencytest-0.1.10.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e36aff66011fa29586970a9784fc9bbe8123e558f04fe91ad52cdcd279e27e16
|
|
| MD5 |
6e0315724884a1f186bb36f00a853d97
|
|
| BLAKE2b-256 |
4240d1184dda7e9627247e5d98ff0a5e7adca0ef13601904592254ba7ca20941
|
File details
Details for the file concurrencytest-0.1.10-py3-none-any.whl.
File metadata
- Download URL: concurrencytest-0.1.10-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50536999b30f320bd04fbfcab6f7769591ee77a886c97c1cd8df9d18375faae5
|
|
| MD5 |
9cc1ac9209e954060a2174505c096e63
|
|
| BLAKE2b-256 |
114ebd0f1e792a0acd57f6d2133366399f1f67a3abe1ed1eb410320d2bbf63bf
|