2015-11-07 8 views
5

Il processo di scoperta nose trova tutti i moduli il cui nome inizia con test e al loro interno tutte le funzioni che hanno test nel nome e tenta di eseguirli come test di unità. Vedi http://nose.readthedocs.org/en/latest/man.htmlOttenere il naso per ignorare una funzione con 'test' nel nome

Ho una funzione il cui nome è, make_test_account, nel file accounts.py. Voglio testare quella funzione in un modulo di test chiamato test_account. Così all'inizio di quel file che faccio:

from foo.accounts import make_test_account 

Ma ora trovo che il naso tratta la funzione make_test_account come una prova di unità e cerca di farlo funzionare (che non riesce perché non passa in alcun parametro, che sono necessarie).

Come posso essere sicuro che il naso ignori quella funzione in modo specifico? Preferirei farlo in un modo che significa che posso invocare il naso come nosetests, senza alcun argomento da riga di comando.

risposta

4

Il naso ha un decoratore nottest. Tuttavia, se non si desidera applicare il decoratore @nottest nel modulo da cui si sta eseguendo l'importazione, è anche possibile modificare semplicemente il metodo dopo l'importazione. Potrebbe essere più pulito mantenere la logica del test dell'unità vicino al test dell'unità stesso.

from foo.accounts import make_test_account 
# prevent nose test from running this imported method 
make_test_account.__test__ = False 

È comunque possibile utilizzare nottest ma ha lo stesso effetto:

from nose.tools import nottest 
from foo.accounts import make_test_account 
# prevent nose test from running this imported method 
make_test_account = nottest(make_test_account) 
+0

Grazie per questa informazione in più! – jwg

+1

Questo approccio sembra molto più ordinato rispetto alla risposta accettata di dm295, poiché non impone il codice specifico di test (e, soprattutto, ** test framework specifico **) da aggiungere nel codice di produzione. Grazie per questa risposta! – dsoosh

+0

Questo sembra migliore perché funzionerà tra i test runner senza introdurre una dipendenza dal naso. – weberc2

5

Indicare che la funzione non è un test: utilizzare il decoratore nottest.

# module foo.accounts 

from nose.tools import nottest 

@nottest 
def make_test_account(): 
    ... 
Problemi correlati