2010-11-03 11 views
10

È possibile utilizzare nose per eseguire un singolo test contemporaneamente (su più processi) e aggregare il risultato in un singolo risultato pass/fail?È possibile utilizzare Naso per eseguire un test più volte, contemporaneamente?

Abbiamo la necessità di eseguire lo stesso test più volte contemporaneamente per garantire che il blocco delle risorse non sia interessato. Se il naso non può farlo, c'è un modello di test/design specifico da seguire per raggiungere questo obiettivo?

+1

Quindi sì, è possibile eseguire un singolo test contemporaneamente. Puoi descrivere l'aggregazione in un singolo passaggio/fallire più in dettaglio? Vuoi contrassegnare un singolo test come "esegui molte volte" e altri come "esegui una singola volta" nella stessa suite? Dovrebbe essere facile se è così. – TryPyPy

risposta

9

E 'possibile run tests concurrently with nose:

Utilizzando il plugin nose.plugin.multiprocess , è possibile parallelizzare un test attraverso un numero configurabile di lavoratori processi. Mentre questo può velocizzare le prove di test vincolate alla CPU, è principalmente utile per i test legati all'IO che spendono la maggior parte del tempo in attesa di dati per arrivano da qualche altra parte e possono beneficiare della parallelizzazione .

Ho adattato il plug-in per eseguire un singolo test in parallelo come si desidera. Scarica da http://paste.pocoo.org/show/319470/ e salva come nose/plugins/repeat.py. Quindi, in nose/plugins/builtin.py, aggiungere la riga ('nose.plugins.repeat', 'RepeatMultiProcess'), a builtins. Chiama in questo modo:

c:\python27\python nose-1.0.0\selftest.py --repeat-processes=2 --repeat-times=3 test2.py 

Nota: il supporto di setup/teardown potrebbe essere danneggiato. In tal caso, la correzione è semplice, vedere il commento nella riga

+0

Hai frainteso: devo eseguire * un singolo test * più volte contemporaneamente. –

+0

Non ho frainteso, questo è il modo integrato per eseguire "su più processi". Sto cercando di capire come usarlo per eseguire lo stesso test in parallelo. – TryPyPy

+0

Effettivamente il mio hack funziona, ma in qualche modo un test sembra funzionare sempre una sola volta. Debugging ... – TryPyPy

11

Questo sembra qualcosa che si desidera nella definizione del test stesso perché si desidera affermare l'aggregazione dei risultati. Darei un'occhiata all'utilizzo di multiprocessing nel test. Creare un pool per eseguire il codice in parallelo. È possibile utilizzare un Queue per aggregare i risultati.

Problemi correlati