2012-03-12 5 views
11

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

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

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

AssertionError: [] != [] 

где пустой Джанго QuerySet сравнивается с пустым списком.

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

ответ

23

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

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

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

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

Смежные вопросы