Il semble que le nez, en fait le plugin multiprocessus, fera fonctionner le test en parallèle. La mise en garde est que la façon dont cela fonctionne, vous pouvez finir par ne pas exécuter le test sur plusieurs processus. Le plugin crée une file d'attente de test, génère plusieurs processus et chaque processus consomme la file d'attente simultanément. Il n'y a pas de répartition des tests pour chaque processus, donc si vos tests s'exécutent très rapidement, ils pourraient finir par être exécutés dans le même processus.
L'exemple suivant affiche cette beaviour:
Fichier test1.py
import os
import unittest
class testProcess2(unittest.TestCase):
def test_Dummy2(self):
self.assertEqual(0, os.getpid())
Fichier test2.py
import os
import unittest
class testProcess2(unittest.TestCase):
def test_Dummy2(self):
self.assertEqual(0, os.getpid())
Exécution nosetests --processes = 2 sorties (notez le processus identique id)
FF
======================================================================
FAIL: test_Dummy2 (test1.testProcess2)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test1.py", line 7, in test_Dummy2
self.assertEqual(0, os.getpid())
AssertionError: 0 != 94048
======================================================================
FAIL: test_Dummy1 (test2.testProcess1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test2.py", line 8, in test_Dummy1
self.assertEqual(0, os.getpid())
AssertionError: 0 != 94048
----------------------------------------------------------------------
Ran 2 tests in 0.579s
FAILED (failures=2)
Maintenant, si l'on ajoute un sommeil dans l'un des tests
import os
import unittest
import time
class testProcess2(unittest.TestCase):
def test_Dummy2(self):
time.sleep(1)
self.assertEqual(0, os.getpid())
Nous obtenons (remarquez les différents ID de processus)
FF
======================================================================
FAIL: test_Dummy1 (test2.testProcess1)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test2.py", line 8, in test_Dummy1
self.assertEqual(0, os.getpid())
AssertionError: 0 != 80404
======================================================================
FAIL: test_Dummy2 (test1.testProcess2)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\temp\test1.py", line 10, in test_Dummy2
self.assertEqual(0, os.getpid())
AssertionError: 0 != 92744
----------------------------------------------------------------------
Ran 2 tests in 1.422s
FAILED (failures=2)
Comment déterminez-vous si elle parallélise du tout? J'ai un but similaire mais je * pense * J'ai un problème différent de vous ... peut-être pas, cependant. – fholo