2015-05-18 7 views
9

Was ist der beste Weg, Unit-Test eine RESTful-API, die E-Mail-Funktionalität (verlorene Passwörter, Benutzeraktivierung) in Python enthält? Alles geschieht über HTTP POST/GET und die Authentifizierung ist derzeit nicht beteiligt. Würde ich einfach die Anforderungsbibliothek verwenden und manuell alles tun, was ich möchte? Ist es möglich, Anfragen zu verwenden, um die Teile meines Komponententests zu automatisieren, die E-Mails beinhalten?Unit Testen einer RESTful-API in Python

+1

Sie sollten Ihre Handler zunächst ohne den HTTP-Overhead testen. Alles andere ist kein Unit-Test, sondern eine Art Integrationstest. – poke

+2

Wenn Sie http verwenden, handelt es sich nicht um einen Komponententest. Im Allgemeinen, wenn Sie etwas anderes als eine einzelne Klasse testen, im Falle einer Rest-API alle URL-Routing, Datenhandhabung überhaupt - es ist kein Unit-Test. – Henning

Antwort

11

Häufig wird das Web-Framework, das Sie zum Implementieren der REST API verwenden, auch Unit-Test-Unterstützung bieten. Zum Beispiel:

Diese Testklassen sind Verknüpfungen, die die Anfrage direkt in den Rahmen des URL-Dispatcher stecken. Das erspart Ihnen den Aufwand, einen freien Port zu finden, einen "echten" Server zu erstellen und den HTTP-Client mit Ihrem Komponententest zu verbinden.

Wie für die E-Mail senden: Ich würde diesen Teil in der TestCase.setUp Methode verspotten. Ändern Sie einfach den Verweis auf das sendende E-Mail-Modul/die E-Mail-Klasse in ein anderes Modul/eine andere Klasse, das die ausgehende E-Mail zurück in den Komponententest zur Auswertung anstatt zum E-Mail-Versand führt.

+0

Diese Tools können hilfreich sein, wenn Sie eine WSGI-App haben, aber das Framework keine Unterstützung für Unit-Tests bietet: http://wsgi.readthedocs.io/en/latest/testing.html. –

Verwandte Themen