Как я могу проверить пустой набор запросов в Django? - PullRequest
13 голосов
/ 12 марта 2012

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

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

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

AssertionError: [] != []

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

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

Ответы [ 2 ]

30 голосов
/ 12 марта 2012

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

self.assertFalse(Tag.objects.get_for_object(Animal.objects.get(pk=1)).exists())
9 голосов
/ 12 марта 2012
self.assertEqual(Tag.objects.get_for_object(Animal.objects.get(pk=1).count(), 0)

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...