У мене є одиничні тести для мого проекту Джанго.
Деякі з поглядів у моєму проекті django виконують завдання селери, і я хочу перевірити базу даних після цих завдань. У мене є окремі тести для селерських завдань, де я їх називаю без .delay()
метод
Головною проблемою, який найкращий і найчистіший спосіб мати селерівського працівника під час роботи Дженкінс?
В даний час я просто біжу nohup celery -A myqpp worker &
перед тестуванням і вбийте всю працюючу селера в кінці роботи.
Відповіді:
0 для відповіді № 1Найкращим і найчистішим способом є відсутність будь-яких працівників із селери під час роботи Дженкінс, а також жодної черги / підсумкового результату. Використовувати CELERY_ALWAYS_EAGER
налаштування для виконання ваших завдань в блочних тестах локально шляхом блокування, доки завдання не повернеться.
Ознайомтесь із документацією про селери: CELERY_ALWAYS_EAGER документів
0 для відповіді № 2
Просто для того, щоб поширювати відповідь про завжди готовий режим, ви можете побачити мою відповідь на інше питання, як ви можете запустити селери працівника з тесту setUp https://stackoverflow.com/a/42107423/590233
Але тут потрібно зробити декілька трійок:
З'єднати селери працівником для тестування дБ
Якось запустіть екземпляр брокеру повідомлень ... (я думаю, що ви запускаєте його вже перед тестуванням, але найчистішим способом є створення екземпляра брокеру з setUp як селери)