【发布时间】:2015-06-10 00:21:24
【问题描述】:
我正在尝试测试应用程序是否正在重试。
@celery.task(bind=False, default_retry_delay=30)
def convert_video(gif_url, webhook):
// doing something
VideoManager().convert(gif_url)
return
except Exception as exc:
raise convert_video.retry(exc=exc)
我在嘲笑测试
@patch('src.video_manager.VideoManager.convert')
@patch('requests.post')
def test_retry_failed_task(self, mock_video_manager, mock_requests):
mock_video_manager.return_value= {'webm':'file.webm', 'mp4':'file.mp4', 'ogv' : 'file.ogv', 'snapshot':'snapshot.png'}
mock_video_manager.side_effect = Exception('some error')
server.convert_video.retry = MagicMock()
server.convert_video('gif_url', 'http://www.company.com/webhook?attachment_id=1234')
server.convert_video.retry.assert_called_with(ANY)
我收到了这个错误
TypeError:异常必须是旧式类或派生自 BaseException,而不是 MagicMock
这很明显,但我不知道该怎么做才能测试是否正在调用该方法。
【问题讨论】:
-
这个答案显示了一个更简单的选择:stackoverflow.com/a/69099778/1199807
标签: python celery python-mock