@marselabdullin

Почему в shell queryset не пустой, а в tests.py пустой?

Хочу написать тест для проверки таска в celery, и казалось бы просто проверяю функции, но не получается так как пустой queryset.

В shell - Content.objects.all() =
<QuerySet [<Content: Content object (3)>, <Content: Content object (4)>]>


В tests.py - Content.objects.all() = `<QuerySet []>`

tests.py:

class TaskTest(TestCase):
        def test_scale_image(self):
            path = Content.objects.get(id=4).image.path
            output_size = update_image(path,500, 500)
            self.assertEqual(output_size, (500,500))

models.py:

class Content(models.Model):
    
    width = models.IntegerField()
    heigth = models.IntegerField()
    image = models.ImageField(blank=True)
    
    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)
        try:
            update_image.delay(self.image.path, self.width, self.heigth)
        except Exception as e:
            logger.error('Ошибка в таске: {}'.format(e))


tasks.py:

@shared_task
    def update_image(path, width, heigth):
        image = Image.open(path)
        output_size = (width, heigth)
        image.thumbnail(output_size)
        image.save(path)
        return output_size
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
tumbler
@tumbler Куратор тега Django
бекенд-разработчик на python
Потому что перед запуском тестов Django создает пустую тестувую базу, накатывает на нее миграции и запускает собственно тесты. А в конце всё удаляет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы