2015-07-26 17 views
11

C'è un modo conveniente per ottenere un debugger ipdb su un'eccezione, quando si eseguono test con il modulo unittest di python?ipdb con modulo unittest python

È conveniente eseguire il debug del codice Python utilizzando ipython --pdb my_script.py. Tuttavia, quando uso il modulo unittest, con

class MyTestCase(unittest.TestCase): 
    def runTest(self): 
     x = 0 
     y = 3/x 

unittest cattura l'eccezione e uscite.

+0

'nosetests --pdb ' è il più vicino di cui sono a conoscenza ma non utilizza ipdb. Aggiungo 'import ipdb; ipdb.set_trace() 'per forzare i test a cadere in ipdb personalmente, anche se mi piacerebbe un modo in linea di cmd di farlo anche. – danny

risposta

-1

C'è un flag% pdb che è possibile impostare in ipython.Esserverà il debugger se si verifica un'eccezione.

0

Trovo utile eseguire prima i test e verificare se si verificano errori. Questo aiuta a ottenere una visione olistica dell'errore. Per esempio ci sono più di un test che stanno fallendo, e quale dovrebbe essere guardato prima.

Dopo aver analizzato questo, questo è il mio approccio al ciclo di test/debug. nel test:

def test_foo_is_bar(self): 
    import ipdb 
    ipdb.set_trace() 
    self.assertEqual('foo', 'bar') 

Ora eseguire il test con:

nosetests -s tests/test_example.py 

-s bandiera aiuterà il vostro per entrare in modalità di input invece di ottenere l'eccezione dal naso.

Sidenote: Ho impostato di scelta rapida per incollare import ipdb as pdb; pdb.set_trace() nelle impostazioni IntelliJ (PyCharm), in modo che posso inserire questa riga per fermare dove voglio nel mio codice.