Как я могу проверить пустой набор запросов в Django?

Я тестирую представление в Django, которое должно удалить все теги из объекта. Для этого я использую это утверждение:

self.assertEqual(list(Tag.objects.get_for_object(Animal.objects.get(pk=1))),[])

Это хорошо работает, так как я получаю пустой список. Я обернул набор запросов Django в списке, чтобы избежать этого:

AssertionError: [] != []

где пустой набор запросов Django сравнивается с пустым списком.

Но поскольку это не то, что мне очень нравится, я задавался вопросом, есть ли лучший способ сделать этот тест.

Ответ 1

Просто используйте exists

self.assertFalse(Tag.objects.get_for_object(Animal.objects.get(pk=1)).exists())

Ответ 2

self.assertEqual(Tag.objects.get_for_object(Animal.objects.get(pk=1).count(), 0)

Вы также можете использовать len(), если вы хотите, чтобы запрос был оценен как список!

В качестве альтернативы также полезно assertQuerysetEqual, вы можете сделать сравнение с экземпляром 0f django.db.models.query.EmptyQuerySet! Но использование count() должно быть самым быстрым способом в большинстве случаев!