2015-05-18 12 views
9

Qual è il modo migliore per testare un'unità API RESTful che include funzionalità di posta elettronica (password perse, attivazione utente) in Python? Tutto viene fatto tramite HTTP POST/GET e l'autenticazione, in questo momento, non è coinvolta. Dovrei semplicemente usare la libreria delle richieste e fare manualmente tutto ciò che voglio? È possibile utilizzare le richieste per automatizzare le parti del mio test unitario che riguardano la posta elettronica?Unit Test a API RESTful in Python

+1

L'unità dovrebbe testare i gestori senza l'overhead HTTP. Tutto il resto non è in realtà un test unitario ma piuttosto una sorta di test di integrazione. – poke

+2

se si utilizza http, non è un test di unità. in generale, se si prova qualcosa di diverso da una singola classe, nel caso di una pausa tutto il routing URL, la gestione dei dati di qualsiasi tipo - non è un test unitario. – Henning

risposta

11

Spesso il framework Web che si utilizza per implementare l'API REST offrirà anche il supporto per il test dell'unità. Per esempio:

Queste classi di test sono scorciatoie che vengono inserite la richiesta direttamente nella URL dispatcher del framework. Ciò ti evita il fastidio di trovare una porta libera, generando un server "reale" e collegando il client http al test dell'unità.

Per quanto riguarda l'invio di e-mail: vorrei prendere in giro quella parte nel metodo TestCase.setUp. Basta cambiare il riferimento al modulo/classe di invio e-mail a un altro modulo/classe che esegue il loop del messaggio e-mail in uscita sul test dell'unità per la valutazione anziché per l'invio tramite e-mail.

+0

Questi strumenti potrebbero essere utili se si dispone di un'app WSGI, ma il framework non ha un buon supporto per il test dell'unità: http://wsgi.readthedocs.io/en/latest/testing.html. –