У меня есть следующие настройки:Запуск сельдерея работника в UnitTest
- Django-сельдерей проект регистрирует задачу
foo
- Проект Б: Использование send_task сельдерея для вызова
foo
- Проекта A и проект B есть та же конфигурация: SQS, msgpack для сериализации, GZIP и т.д.
- Каждый проект живет на другом хранилище GitHub
У меня есть проверенные модулем звонки на «foo» в проекте A, без использования Celery вообще, всего foo(1,2,3)
и утверждать результат. Я знаю, что это работает.
Я тестировал модуль, который send_task в проекте B отправляет правильные параметры.
Что я не тестирую, и вам нужна ваша консультация, это интеграция между этими двумя проектами. Я хотел бы иметь UnitTest, что бы:
- Start работника в контексте проекта
- Отправить задачу, используя код проекта B
- утверждающие, что рабочий начал в первый шаг получает задача, с параметрами, которые я отправил на втором этапе, и что функция
foo
вернула ожидаемый результат.
Кажется, что это можно взломать, используя подпроцесс python и разбор выходных данных рабочего, но это уродливо. Каков рекомендуемый подход к модульному тестированию в таких случаях? Любой фрагмент кода, который вы могли бы поделиться? Благодаря!
Помогите нам понять, почему вы хотите проверить, что происходит на стороне рабочего? Недостаточно ли протестировать с вызывающей стороны, и если результаты правильного ответа объявят тест успешным? –