Tôi đang cố kiểm tra xem ứng dụng có đang thử lại không.Làm thế nào để kiểm tra Thử lại trong ứng dụng Celery bằng Python?
@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)
Và tôi chế giễu các thử nghiệm
@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)
Và tôi nhận được lỗi này
TypeError: exceptions must be old-style classes or derived from BaseException, not MagicMock
Đó là hiển nhiên, nhưng tôi không biết làm thế nào để làm điều đó bằng cách khác để kiểm tra nếu phương thức đang được gọi.