Как запустить сельдерей в тестах Django, используя PyCharm - PullRequest
1 голос
/ 29 сентября 2019

Я пытаюсь проверить функциональность моего приложения Django.
Некоторые из моих задач используют Celery.
Как я могу запустить celery в моей тестовой среде, используя PyCharm?

Ответы [ 3 ]

1 голос
/ 30 сентября 2019

Чтобы выполнить модульные тесты без тестирования сельдерея, вы можете издеваться над декоратором @shared_task

from unittest import mock

@mock.patch('celery.shared_task', lambda *args, **kwargs: lambda func: func)
def test_celery_unit()
    from tasks import mytask
    result = mytask() # could be call just as a function
1 голос
/ 30 сентября 2019

Я предполагаю, что вы используете декоратор shared_task и запускаете задачи как function_name.delay ()

Это можно проверить, добавив условие, которое запускает задачу, если она выполняется локально (или с помощью теста)и использует сельдерей в производстве.Это также позволяет запускать сервер локально, без использования сельдерея, и это может быть проще для отладки и обслуживания.

PRODUCTION = False

if PRODUCTION:
    some_task.delay()
else:
    some_task()

Можно также создать декоратор, который делает то же самое, что красивее, но, возможно, сложнее поддерживать?

0 голосов
/ 29 сентября 2019

Использование библиотеки mock решит вашу проблему.

...