2016-05-30 24 views
19

Recentemente, Ned Batchelder durante his talk at PyCon 2016 ha osservato:addCleanUp vs tearDown

Se si utilizza unittest di scrivere i test, sicuramente utilizzare addCleanup, è molto meglio di tearDown.

Fino ad ora, non ho mai usato addCleanUp(), ma ho usato per setUp()/tearDown() paio di metodi per la prova di "set up" e fasi "abbattere".

Perché dovrei passare a addCleanUp() invece di tearDown()?


E 'stato anche recentemente discusso nel podcast Python unittest with Robert Collins.

+1

Ho notato il discorso e mi sono chiesto lo stesso. – PascalVKooten

risposta

24

Per i addCleanup doc string: articoli

Cleanup sono chiamati, anche se l'installazione non riesce (a differenza tearDown)

addCleanup può essere utilizzato per registrare più funzioni, così da poter utilizzare funzioni separate per ogni risorsa che desideri pulire. Ciò consentirebbe al tuo codice di essere un po 'più riutilizzabile/modulare.

4

addCleanup() i metodi verranno eseguiti anche se uno di essi non riesce e verrà eseguito anche se setUp() non riesce. Si dovrebbe anche considerare l'utilizzo di pytest.

2

Un'altra cosa buona di addCleanup è che funziona come ci si aspetterebbe.

Ad esempio, se si chiama in una funzione setUp, tutti i metodi di test chiameranno la funzione di pulitura alla fine.

Se si chiama in un metodo di prova, solo questo metodo chiama la funzione di pulizia.