Проблема тестирования 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, но ничего не меняется.

У кого-нибудь есть идея, как подойти и решить этот вопрос?

Вернуться на верх