Получите Celery для использования тестовой базы данных DjangoPython

Программы на Python
Ответить
Anonymous
 Получите Celery для использования тестовой базы данных Django

Сообщение Anonymous »

Я пытаюсь написать несколько модульных тестов для некоторых задач сельдерея в моем приложении Django. Эти задачи принимают идентификатор модели в качестве аргумента, выполняют некоторые действия и обновляют модель. При запуске devserver и celery worker все работает отлично, но при запуске моих тестов стало ясно, что задача celery не использует тестовую базу данных django, которая создается и уничтожается в ходе тестового запуска. Вопрос в том, как я могу заставить сельдерей использовать ту же временную базу данных, что и остальные мои тесты?

Как видите, я использую переопределения настроек, которые предлагается в каждом ответе на подобные проблемы.

ОБНОВЛЕНИЕ: Обнаружено, что вместо передачи идентификатора объекта задаче и получения задачи из базы данных, если я просто передаю сам объект соответствует задаче, тесты работают правильно, без каких-либо побочных эффектов о функционировании задачи. Так что, по крайней мере, на данный момент это будет моим решением.

В моем тесте:

class JobTest(TestCase):

@override_settings(CELERY_ALWAYS_EAGER=True,
CELERY_EAGER_PROPAGATES_EXCEPTIONS=True,
BROKER_BACKEND='memory')
def test_Job_Complete(self):
job = models.Job()
job.save()
tasks.do_a_thing(job.id)
self.assertTrue(job.complete)


В моей задаче:

@celery.task
def do_a_thing(job_id):
job = models.Job.objects.get(pk=job_id)
bunch_of_things(job)
job.complete = True
job.save()


Подробнее здесь: https://stackoverflow.com/questions/221 ... go-test-db
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»