Я пытаюсь написать несколько модульных тестов для некоторых задач сельдерея в моем приложении 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
Получите Celery для использования тестовой базы данных Django ⇐ Python
Программы на Python
-
Anonymous
1736948043
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()
Подробнее здесь: [url]https://stackoverflow.com/questions/22105523/get-celery-to-use-django-test-db[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия