私は、セロリのタスクをキューに追加し、ユーザーに200を返すフラスコビューを持っています。単体テストのフラスコビューセロリのタスクを模擬して
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
問題は、次のテストであり、私はなどなどセロリのインスタンスを持っている必要がしたくない私は、すべての検証がOKになった後、それがユーザーに200を返すことを知ってほしいです。セロリーlaunch_task()
は、他の場所で試験されます。
したがって私は、launch_task()
を呼び出すことに熱心だから、本質的にそれは何もしません。私のunittestはセロリインスタンスから独立しています。
私は、様々な化身試してみた:
@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)
をしかし、それは仕事を得るように見えることはできません、私の見解は、わずか500エラーで終了します。どんな援助もありがとう!