2012-03-12 37 views
11

Estoy probando una vista en Django que debería eliminar todas las etiquetas de un objeto. Para eso uso esta afirmación:¿Cómo puedo probar un queryset vacío en Django?

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

Eso funciona bien, ya que a cambio obtengo una lista vacía. Envolví la queryset Django en una lista de evitar esto:

AssertionError: [] != [] 

donde un Django vacío queryset se compara con una lista vacía.

Pero como esto no es algo que me guste mucho, me pregunto si existe una manera más agradable de hacer esa prueba.

Respuesta

23

Sólo tiene que utilizar 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) 

También es posible usar len() si quiere cumplir el conjunto de consultas que se evalúa como una lista!

Alternativamente también assertQuerysetEqual es útil, podría hacer una comparación con una instancia 0f django.db.models.query.EmptyQuerySet! ¡Pero usar count() debería ser la manera más rápida en la mayoría de los casos!

Cuestiones relacionadas