2013-05-04 11 views
5

Dati i seguenti:test Naso Python da generatore non in esecuzione contemporaneamente

from time import sleep 

def runTest(a): 
    sleep(1) 
    assert a >= 0 

def test_all(): 
    for i in range(5): 
     yield (runTest, i) 

mi aspetterei che il cinque prove per ottenere eseguiti in esecuzione in parallelo con nosetests --processes=8 e quindi eseguiti in circa un secondo - Tuttavia, ci vuole poco più di cinque secondi per eseguire: sembrano essere in esecuzione in sequenza e non contemporaneamente.

Secondo la documentazione del naso, il plug-in multiprocesso ha supportato i generatori di test (come li chiama la documentazione del naso) da 1.1: sto usando il nose 1.3.0 quindi dovrebbe essere supportato. L'aggiunta di _multiprocess_can_split_ = True non fa alcuna differenza, come ci si aspetterebbe, in quanto i proiettori non vengono utilizzati.

Come si eseguono questi cinque test contemporaneamente?

risposta

3

Secondo l'autore del naso, on the mailing list, il plugin multiprocesso non funziona con i generatori a 1.3 (a known bug), e si raccomanda di attaccare con 1.1 se uno ha bisogno di lavorare.

2

Puoi provare

from time import sleep 
from multiprocessing import Process 

def runTest(a): 
    sleep(1) 
    assert a >= 0 

def test_all(): 
    for i in range(5): 
     Process(target=(yield (runTest, i))).start() 
+0

Preferisco piuttosto capire perché il plug-in multiprocesso di nose non riesca a eseguire i test esistenti contemporaneamente anziché parallelizzarli esternamente. – gsnedders

+0

Non so quali impostazioni state usando ma questa soluzione non funziona affatto. Tutti i test vengono eseguiti sullo stesso processo e vengono eseguiti in sequenza. Questo è stato fatto su nose 1.3 usando varie combinazioni di variabili multiprocesso e comandi nosetest. I problemi sembrano originarsi dal rendimento. – magixx

Problemi correlati