On the other hand, if you add another test_ function there will be no changes in total duration because pytest is actually running both tests in parallel:
#!/usr/bin/env python import pytest import time @pytest.fixture(scope="function", params=["a1", "a2"]) def fix_dummy(request): print "fix_dummy: parameter: %s" % (request.param, ) return request.param def test_dummy1(fix_dummy): print "parameter from fix_dummy: %s" %(fix_dummy, ) time.sleep(2) def test_dummy2(fix_dummy): print "parameter from fix_dummy: %s" %(fix_dummy, ) time.sleep(2) $ py.test -vs test_dummy.py -n 2 ====================================================================================== test session starts ======================================================================================= platform linux2 -- Python 2.7.3 -- py-1.4.26 -- pytest-2.6.4 -- /usr/bin/python plugins: xdist [gw0] linux2 Python 2.7.3 cwd: /home/gmagno/Desktop/pytest [gw1] linux2 Python 2.7.3 cwd: /home/gmagno/Desktop/pytest [gw1] Python 2.7.3 (default, Feb 27 2014, 20:00:17) -- [GCC 4.6.3] [gw0] Python 2.7.3 (default, Feb 27 2014, 20:00:17) -- [GCC 4.6.3] gw0 [4] / gw1 [4] scheduling tests via LoadScheduling test_dummy.py::test_dummy2[a1] test_dummy.py::test_dummy1[a1] [gw1] PASSED test_dummy.py::test_dummy1[a1] [gw0] PASSED test_dummy.py::test_dummy2[a1] test_dummy.py::test_dummy1[a2] test_dummy.py::test_dummy2[a2] [gw1] PASSED test_dummy.py::test_dummy1[a2] [gw0] PASSED test_dummy.py::test_dummy2[a2] ==================================================================================== 4 passed in 4.66 seconds ==================================================================================== I hope I am not confusing you guys. Cheers, Gonçalo On Sat, Dec 6, 2014 at 9:29 PM, Goncalo Morgado <goncalo.ma...@gmail.com> wrote: > > > I might be missing something very fundamental here, but tests are not > running in parallel on my side, as you may see tests are taking 4 > seconds-ish: > > $ py.test -vs test_dummy.py -n 2 > ====================================================================================== > test session starts > ======================================================================================= > platform linux2 -- Python 2.7.3 -- py-1.4.26 -- pytest-2.6.4 -- > /usr/bin/python > plugins: xdist > [gw0] linux2 Python 2.7.3 cwd: /home/gmagno/Desktop/pytest > [gw1] linux2 Python 2.7.3 cwd: /home/gmagno/Desktop/pytest > [gw0] Python 2.7.3 (default, Feb 27 2014, 20:00:17) -- [GCC 4.6.3] > [gw1] Python 2.7.3 (default, Feb 27 2014, 20:00:17) -- [GCC 4.6.3] > gw0 [2] / gw1 [2] > scheduling tests via LoadScheduling > > test_dummy.py::test_dummy1[a1] > [gw1] PASSED test_dummy.py::test_dummy1[a1] > test_dummy.py::test_dummy1[a2] > [gw1] PASSED test_dummy.py::test_dummy1[a2] > > ==================================================================================== > 2 passed in 4.47 seconds > ==================================================================================== > > Cheers, > Gonçalo > > > > On Sat, Dec 6, 2014 at 8:52 PM, Bruno Oliveira <nicodde...@gmail.com> > wrote: > >> Thanks for the example. >> >> I tried and it seems that xdist is running the tests in parallel: the >> more CPUs I use, the fastest the test suite runs. Do you see a different >> behavior? >> >> Cheers, >> >> On Sat, Dec 6, 2014 at 5:12 PM, Goncalo Morgado <goncalo.ma...@gmail.com> >> wrote: >> >>> To better depict what I am saying follows some code. >>> >>> $ sudo pip install pytest >>> $ sudo pip install pytest-xdist >>> $ py.test -vs test_dummy.py -n 2 >>> >>> >>> #!/usr/bin/env python >>> >>> """ >>> This is test_dummy.py >>> """ >>> import pytest >>> import time >>> >>> @pytest.fixture(scope="function", params=["a1", "a2"]) >>> def fix_dummy(request): >>> print "fix_dummy: parameter: %s" % (request.param, ) >>> return request.param >>> >>> def test_dummy1(fix_dummy): >>> print "parameter from fix_dummy: %s" %(fix_dummy, ) >>> time.sleep(2) >>> >>> >>> Cheers, >>> Gonçalo >>> >>> >>> >>> On Sat, Dec 6, 2014 at 6:45 PM, Goncalo Morgado <goncalo.ma...@gmail.com >>> > wrote: >>> >>>> >>>> pytest-xdist helped me to run different tests in multiple CPUs, for >>>> instance test_foo() and test_bar() would easily be run in two CPUs with >>>> pytest-xdist. The problem is when you have test_foobar(some_fixture), where >>>> some_fixture is parametrized with, let's say two parameters ["a", "b"], >>>> which will lead to two different test runs of test_foobar(). The challenge >>>> is to have these two test runs running in two CPUs. >>>> >>>> Cheers >>>> Gonçalo >>>> >>>> >>>> On Sat, Dec 6, 2014 at 6:30 PM, Bruno Oliveira <nicodde...@gmail.com> >>>> wrote: >>>> >>>>> Have you tried using pytest-xdist? >>>>> >>>>> Cheers, >>>>> >>>>> On Sat, Dec 6, 2014 at 4:26 PM, Goncalo Morgado < >>>>> goncalo.ma...@gmail.com> wrote: >>>>> >>>>>> >>>>>> Hi pytest community, >>>>>> >>>>>> I am not sure this is the right place to ask this, and I am sorry if >>>>>> it's not. >>>>>> I am trying to make use of multiple CPUs to run my tests, which I can >>>>>> for separately defined tests (different test_ functions for instance). >>>>>> *The >>>>>> challenge is to run tests, generated from one single test_ function which >>>>>> fixture it depends on is parametrized with multiple parameters, on >>>>>> multiple >>>>>> CPUs*. >>>>>> Currently I have this test that generates more than a thousand tests >>>>>> (because of the parametrized fixture it depends on) and ends up being >>>>>> very >>>>>> time consuming to run in one single CPU. >>>>>> >>>>>> Thanks for this great tool that is pytest! >>>>>> >>>>>> Cheers, >>>>>> Gonçalo >>>>>> >>>>>> >>>>>> >>>>>> _______________________________________________ >>>>>> pytest-dev mailing list >>>>>> pytest-dev@python.org >>>>>> https://mail.python.org/mailman/listinfo/pytest-dev >>>>>> >>>>>> >>>>> >>>> >>> >> >
_______________________________________________ pytest-dev mailing list pytest-dev@python.org https://mail.python.org/mailman/listinfo/pytest-dev