75 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
| concurrencytest
 | |
| ===============
 | |
| 
 | |
| 
 | |
| 
 | |
| Python testtools extension for running unittest suites concurrently.
 | |
| 
 | |
| ----
 | |
| 
 | |
| Install from PyPI:
 | |
| ```
 | |
| pip install concurrencytest
 | |
| ```
 | |
| 
 | |
| ----
 | |
| 
 | |
| Requires:
 | |
| 
 | |
|  * [testtools](https://pypi.python.org/pypi/testtools) : `pip install testtools`
 | |
|  * [python-subunit](https://pypi.python.org/pypi/python-subunit) : `pip install python-subunit`
 | |
| 
 | |
| ----
 | |
| 
 | |
| Example:
 | |
| 
 | |
| ```python
 | |
| import time
 | |
| import unittest
 | |
| 
 | |
| from concurrencytest import ConcurrentTestSuite, fork_for_tests
 | |
| 
 | |
| 
 | |
| class SampleTestCase(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)
 | |
| 
 | |
| 
 | |
| # Load tests from SampleTestCase defined above
 | |
| suite = unittest.TestLoader().loadTestsFromTestCase(SampleTestCase)
 | |
| runner = unittest.TextTestRunner()
 | |
| 
 | |
| # Run tests sequentially
 | |
| runner.run(suite)
 | |
| 
 | |
| # Run same tests across 4 processes
 | |
| suite = unittest.TestLoader().loadTestsFromTestCase(SampleTestCase)
 | |
| concurrent_suite = ConcurrentTestSuite(suite, fork_for_tests(4))
 | |
| runner.run(concurrent_suite)
 | |
| ```
 | |
| Output:
 | |
| 
 | |
| ```
 | |
| ....
 | |
| ----------------------------------------------------------------------
 | |
| Ran 4 tests in 2.003s
 | |
| 
 | |
| OK
 | |
| ....
 | |
| ----------------------------------------------------------------------
 | |
| Ran 4 tests in 0.504s
 | |
| 
 | |
| OK
 | |
| ```
 |