Проблема тестирования Django и Celery
Я использую Celery в моем приложении Django (DRF) для выполнения асинхронных задач.
Все работает хорошо, кроме тестирования.
Похоже, что проблема связана с APITestCase, который выполняется перед Celery APITransactionTestCase, удаляющим базу данных.
Вот представительный код:
test_drf_views.py
class DRFTestCase(APITestCase):
@classmethod
def setUpTestData(cls):
'''
Init database
'''
from myapp.init import init_data # this loads the database
def setUp(self):
self.login = reverse('login')
# ... just a setup
def test_foo(self):
# ... just a test that works fine
test_celery_task.py
class CeleryTaskTestCase(APITransactionTestCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
app.loader.import_module('celery.contrib.testing.tasks')
cls.celery_worker = start_worker(app)
cls.celery_worker.__enter__()
@classmethod
def tearDownClass(cls):
super().tearDownClass()
cls.celery_worker.__exit__(None, None, None)
def setUp(self):
super().setUp()
self.login = reverse('login')
# here I call the DB and it FAIL
При запуске pytest я получаю ошибку: "соответствующий запрос не существует", потому что когда процедура тестирования достигает test_celery_task.py БД, похоже, удаляется. Я также пытался перезагрузить БД в тесте celery, но ничего не меняется.
У кого-нибудь есть идея, как подойти и решить этот вопрос?