Test del naso - Framework

Il progetto del naso è stato rilasciato nel 2005, l'anno successivo py.testha ricevuto la sua veste moderna. È stato scritto da Jason Pellerin per supportare gli stessi idiomi di test che erano stati sperimentati da py.test, ma in un pacchetto più facile da installare e mantenere.

Il nose il modulo può essere installato con l'aiuto di pip utility

pip install nose

Questo installerà il modulo nose nell'attuale distribuzione Python così come un nosetest.exe, il che significa che il test può essere eseguito usando questa utility così come usando l'opzione –m.

C:\python>nosetests –v test_sample.py
Or
C:\python>python –m nose test_sample.py

nose raccoglie test da unittest.TestCasesottoclassi, ovviamente. Possiamo anche scrivere semplici funzioni di test, così come classi di test che non sono sottoclassi di unittest.TestCase. nose fornisce anche una serie di funzioni utili per scrivere test a tempo, testare le eccezioni e altri casi d'uso comuni.

noseraccoglie i test automaticamente. Non è necessario raccogliere manualmente i casi di test nelle suite di test. L'esecuzione dei test è reattiva, da alloranose inizia l'esecuzione dei test non appena viene caricato il primo modulo di test.

Come con il modulo unittest, nose supporta i dispositivi a livello di pacchetto, modulo, classe e test case, quindi l'inizializzazione costosa può essere eseguita il più raramente possibile.

Utilizzo di base

Consideriamo nosetest.py simile allo script usato in precedenza -

# content of nosetest.py
def func(x):
   return x + 1
   
def test_answer():
   assert func(3) == 5

Per eseguire il test precedente, utilizzare la seguente sintassi della riga di comando:

C:\python>nosetests –v nosetest.py

L'output visualizzato sulla console sarà il seguente:

nosetest.test_answer ... FAIL
================================================================
FAIL: nosetest.test_answer
----------------------------------------------------------------------
Traceback (most recent call last):
   File "C:\Python34\lib\site-packages\nose\case.py", line 198, in runTest
      self.test(*self.arg)
   File "C:\Python34\nosetest.py", line 6, in test_answer
      assert func(3) == 5
AssertionError
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures = 1)

nose può essere integrato con DocTest utilizzando with-doctest opzione nella riga di comando di bove.

\nosetests --with-doctest -v nosetest.py

Puoi usare nose in uno script di test -

import nose
nose.main()

Se non desideri che lo script di test esca con 0 in caso di successo e 1 in caso di fallimento (come unittest.main), usa invece nose.run () -

import nose
result = nose.run()

Il risultato sarà vero se l'esecuzione del test ha esito positivo o falso se fallisce o genera un'eccezione non rilevata.

nosesupporta i dispositivi (metodi di installazione e smontaggio) a livello di pacchetto, modulo, classe e test. Come per i dispositivi py.test o unittest, il setup viene eseguito sempre prima di qualsiasi test (o raccolta di test per pacchetti e moduli di test); lo smontaggio viene eseguito se la configurazione è stata completata correttamente, indipendentemente dallo stato della corsa di prova.