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
Antwort
Häufig wird das Web-Framework, das Sie zum Implementieren der REST API verwenden, auch Unit-Test-Unterstützung bieten. Zum Beispiel:
- Flask: http://flask.pocoo.org/docs/0.10/testing/
- Django: http://django-testing-docs.readthedocs.org/en/latest/views.html
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.
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. –
- 1. Unit Testen einer Anmeldung in ASP.NET
- 2. Unit testen Aurelia view
- 3. Kann ich eine innere Funktion in Python Unit testen?
- 4. Unit Testen eines Firefox-Addons
- 5. AngularJS Unit Testen eines Dienstes
- 6. Testen auf ImportErrors in Python
- 7. Datenbank testen in Python, Postgresql
- 8. Unit testen eine Flask-Anwendung Klasse
- 9. Boolesches Testen einer Liste in Python
- 10. Eclipse vs VS IDE Unit Testen einer Klasse
- 11. Unit Testen einer Klasse mit einem internen Konstruktor
- 12. Unit Testen einer Klasse, die das Dateisystem verwendet
- 13. Gibt es einen Punkt Unit Unit Serialisierung testen?
- 14. How to Unit Testen einer Implementierung von IDictionary
- 15. Unit Testen einer Klasse, die RegistryManager verwendet C# Azure IoTHub
- 16. Testen einer Funktion, die nicht-deterministische Ergebnisse mit Python Unit Test zurückgeben kann
- 17. Unit Testen der Datenzugriffsebene - Testen von Update-Methoden?
- 18. Unit-Test geschützte Klassenmethoden in Python?
- 19. Unit Test Theorien in Python?
- 20. Go Unit-Testing fatals und testen main()
- 21. Unit Testen von Daten von DB2
- 22. Unit Testing - Was nicht zu testen ist
- 23. Unit Testen eines RenderMvcControllers sogar möglich?
- 24. Unit Testen eines Dienstes mit benötigten Systembibliotheken
- 25. Unit Testen Android mit ActivityUnitTestCase und PreferenceManager
- 26. Können Sie den Unit Obfuscated Code testen?
- 27. Spark Jobserver Unit Testen von Jobs
- 28. Wie Unit React-Redux verbundene Komponenten testen?
- 29. Unit-Tests für Ausnahmen in Python-Konstruktor
- 30. Probleme beim Testen der Grails Unit
Sie sollten Ihre Handler zunächst ohne den HTTP-Overhead testen. Alles andere ist kein Unit-Test, sondern eine Art Integrationstest. – poke
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