Sto usando py.test per l'unità test del mio programma python. Desidero eseguire il debug del mio codice di test con il debugger Python nel modo normale (con cui intendo pdb.set_trace() nel codice) ma non riesco a farlo funzionare.È possibile eseguire il debug con Python debugger quando si utilizza py.test in qualche modo?
Inserire pdb.set_trace() nel codice non funziona (solleva IOError: lettura da stdin mentre l'output viene acquisito). Ho anche provato a eseguire py.test con l'opzione --pdb ma non sembra che faccia il trucco se voglio esplorare cosa succede prima della mia affermazione. Si interrompe quando un'affermazione fallisce e passare da quella linea significa terminare il programma.
Qualcuno conosce un modo per ottenere il debug, o esegue il debug e py.test non vuole essere insieme?
Peter, grazie per i vostri suggerimenti. L'alternativa python -m pdb mi guida attraverso lo script ma non chiama le funzioni, quindi sebbene sia utile per il mio sviluppo di Python, non vedo come posso farlo funzionare. Ho menzionato l'opzione --pdb ma a meno che qualcuno non pensi a come usarlo, non posso andare oltre con quello. – Joel
Suggerisco di leggere il manuale su pdb e di imparare i tasti. pdb stamperà la funzione che verrà eseguita successivamente. Se digiti "s", entrerai in quella funzione. Se si digita "n", che è l'impostazione predefinita, si passa alla riga di codice successiva.È molto probabile che stai premendo "n" anziché "s" quando vuoi entrare nella tua routine "principale". –
Non è così che py.test funziona. Piccolo ma valido codice di prova per py.test: def test_arithmetic: asser 2 + 2 == 4 Questo è sufficiente per avere un test unitario. Nessuna routine "principale", solo una funzione che inizia con "test_". Se esegui questo con python normale, definiresti test_arithmetic, non eseguirlo. Ma py.test trova le funzioni che iniziano con test_ e le esegue per me, avendo cura di affermazioni fallite, ecc. – Joel