Ich habe also eine Flashen-Ansicht, die einer Warteschlange eine Sellerie-Aufgabe hinzufügt und dem Benutzer eine 200er-Datei zurückgibt.
%Vor% Das Problem besteht darin, Folgendes zu testen: ich möchte keine Sellerie-Instanz usw. haben. Ich möchte nur wissen, dass nach der Überprüfung alles in Ordnung ist und der Benutzer 200 zurückgibt. Die Sellerie launch_task()
wird an anderer Stelle getestet.
Deshalb bin ich scharf darauf, dass launch_task()
call so im Wesentlichen zu verspotten, dass es nichts tut, was meinen unitest unabhängig von der Sellerie-Instanz macht.
Ich habe verschiedene Inkarnationen ausprobiert:
%Vor%Aber es scheint nicht zu funktionieren, meine Ansicht endet einfach mit einem 500 Fehler. Jede Hilfe wäre willkommen!
Ich habe auch einen @patch
Decorator probiert und es hat nicht funktioniert
Und ich fand in setUp
like:
Der @task
Dekorator ersetzt die Funktion durch ein Task
Objekt (siehe Dokumentation ). Wenn Sie die Aufgabe selbst verspotten, ersetzen Sie das (etwas magische) Task
-Objekt mit einem MagicMock
und es wird die Aufgabe überhaupt nicht geplant. Stattdessen die Task
-Methode des run()
-Objekts wie folgt vortäuschen:
Tags und Links python unit-testing celery mocking flask