2012-03-12 30 views
11

Django'da, tüm etiketleri bir nesneden kaldırması gereken bir görünümü test ediyorum. Bunun için şu doğrulamayı kullanıyorum:Django'da boş bir sorgulamayı nasıl test edebilirim?

Bu iyi çalışır, karşılığında boş bir liste alır. Bunu önlemek için bir listede Django Sorgu Kümesi sarılmış:

AssertionError: [] != [] 

nerede boş bir listeyle karşılaştırılır QuerySet boş Django.

Ama bu çok sevdiğim bir şey olmadığı için, bu testi yapmanın daha iyi bir yolu olup olmadığını merak ettim.

cevap

23

Hemen kullanmak 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) 

Eğer bir liste olarak değerlendirilmektedir Sorgu Kümesi zorlamak istiyorsanız da len() kullanabilirsiniz!

Ayrıca assertQuerysetEqual da yararlıdır, bir örnekle 0f django.db.models.query.EmptyQuerySet bir karşılaştırma yapabilirdiniz! Ancak, çoğu durumda en hızlı şekilde count() kullanılmalıdır!

İlgili konular