def test_retry_task(self, info): TASK_NAME = 'news.tasks.update_phonebook' failed_task = FailedTask(name=TASK_NAME, task_id=4, args=[1, 2], kwargs={'token': 3}, exc='', einfo='') # Failed task is deleted after queuing, but that only works on records # that have been saved, so just mock that and check later that it was # called. failed_task.delete = Mock(spec=failed_task.delete) with patch.object(celery_app, 'send_task') as send_task_mock: # Let's retry. failed_task.retry() # Task was submitted again send_task_mock.assert_called_with(TASK_NAME, args=[1, 2], kwargs={'token': 3}) # Previous failed task was deleted self.assertTrue(failed_task.delete.called)
def test_retry_task(self, info): TASK_NAME = 'news.tasks.update_phonebook' failed_task = FailedTask(name=TASK_NAME, task_id=4, args=[1, 2], kwargs={'token': 3}, exc='', einfo='') # Failed task is deleted after queuing, but that only works on records # that have been saved, so just mock that and check later that it was # called. failed_task.delete = Mock(spec=failed_task.delete) # Mock the actual task (already registered with celery): mock_update_phonebook = Mock(spec=update_phonebook) with patch.dict(celery.registry.tasks, {TASK_NAME: mock_update_phonebook}): # Let's retry. failed_task.retry() # Task was submitted again mock_update_phonebook.apply_async.assert_called_with((1, 2), {'token': 3}) # Previous failed task was deleted self.assertTrue(failed_task.delete.called)