So habe ich eine Kolben-Ansicht, die eine Sellerie-Aufgabe zu einer Warteschlange hinzufügt und eine 200 an den Benutzer zurückgibt.Komponententest Flask view spotting Sellerie Tasks
from flask.views import MethodView
from app.tasks import launch_task
class ExampleView(MethodView):
def post(self):
# Does some verification of the incoming request, if all good:
launch_task(task, arguments)
return 'Accepted', 200
Das Problem ist folgendes mit Testen, ich will keinen Sellerie-Instanz haben müssen etc. etc. Ich möchte nur wissen, dass nach all der Überprüfung in Ordnung ist, ist es 200 an den Benutzer zurückgibt . Der Sellerie launch_task()
wird an anderer Stelle getestet.
Daher bin ich scharf darauf, dass launch_task()
Call so im Wesentlichen es tut nichts, macht meine unitest unabhängig von der Sellerie-Instanz.
Ich habe verschiedene Inkarnationen versucht:
@mock.patch('app.views.launch_task.delay'):
def test_launch_view(self, mock_launch_task):
mock_launch_task.return_value = None
# post a correct dictionary to the view
correct_data = {'correct': 'params'}
rs.self.app.post('/launch/', data=correct_data)
self.assertEqual(rs.status_code, 200)
@mock.patch('app.views.launch_task'):
def test_launch_view(self, mock_launch_task):
mock_launch_task.return_value = None
# post a correct dictionary to the view
correct_data = {'correct': 'params'}
rs.self.app.post('/launch/', data=correct_data)
self.assertEqual(rs.status_code, 200)
Aber kann nicht scheinen, um es zu bekommen zu arbeiten, meine Ansicht verlässt nur mit einem 500-Fehler. Jede Hilfe wäre willkommen!