2012-03-12 23 views
11

मैं Django में एक दृश्य का परीक्षण कर रहा हूं जो किसी ऑब्जेक्ट से सभी टैग को हटा देना चाहिए। इसके लिए मैं इस दावे का उपयोग करता हूं:मैं Django में एक खाली क्वेरीसेट के लिए कैसे परीक्षण कर सकता हूं?

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

यह अच्छी तरह से काम करता है, क्योंकि मुझे बदले में एक खाली सूची मिलती है। मैं एक सूची में Django क्वेरीसमूह लिपटे इस से बचने के लिए:

AssertionError: [] != [] 

जहां एक खाली Django क्वेरीसमूह एक रिक्त सूची से तुलना की जाती है।

लेकिन जैसा कि यह कुछ नहीं है मुझे बहुत पसंद है, मुझे आश्चर्य हुआ कि क्या परीक्षण करने के लिए एक अच्छा तरीका है।

उत्तर

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() इस्तेमाल कर सकते हैं अगर आप क्वेरीसमूह एक सूची के रूप में मूल्यांकन किया जा रहा लागू करना चाहते हैं!

वैकल्पिक रूप से assertQuerysetEqual उपयोगी है, आप एक उदाहरण 0f django.db.models.query.EmptyQuerySet के साथ तुलना कर सकते हैं! लेकिन अधिकांश मामलों में count() का सबसे तेज़ तरीका होना चाहिए!

संबंधित मुद्दे