我有一个Flask视图,它将一个celery任务添加到队列中,并向用户返回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
问题在于测试以下内容,我不想必须拥有celery实例等等。我只想知道在所有验证都通过之后,它向用户返回200。 celery launch_task()
将在其他地方进行测试。
因此,我很想模拟掉launch_task()
调用,使其本质上什么也不做,使我的单元测试与celery实例无关。
我尝试过各种化身:
@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错误退出。如果有任何帮助将不胜感激!