मैं अपने Django विचारों का परीक्षण करने की कोशिश कर रहा हूँ। यह दृश्य टेम्पलेट के लिए एक क्वेरीसमूह गुजरता है:मैं Django QuerySets का परीक्षण कैसे करूं?
def merchant_home(request, slug):
merchant = Merchant.objects.get(slug=slug)
product_list = merchant.products.all()
return render_to_response('merchant_home.html',
{'merchant': merchant,
'product_list': product_list},
context_instance=RequestContext(request))
और परीक्षण:
def test(self):
"Merchant home view should send merchant and merchant products to the template"
merchant = Merchant.objects.create(name='test merchant')
product = Product.objects.create(name='test product', price=100.00)
merchant.products.add(product)
test_client = Client()
response = test_client.get('/' + merchant.slug)
# self.assertListEqual(response.context['product_list'], merchant.products.all())
self.assertQuerysetEqual(response.context['product_list'], merchant.products.all())
संपादित मैं self.assertQuerysetEqual उपयोग कर रहा हूँ self.assertListEqual के बजाय। दुर्भाग्य से यह अभी भी काम नहीं करता है, और टर्मिनल दर्शाता है कि यह: ['<Product: Product object>'] != [<Product: Product object>]
assertListEqual को जन्म देती है: 'क्वेरीसमूह' ऑब्जेक्ट कोई विशेषता 'अंतर' है assertEqual या तो काम नहीं करता है, हालांकि self.assertSetEqual(response.context['product_list'][0], merchant.products.all()[0])
पारित करता है।
मुझे लगता है कि ऐसा इसलिए है क्योंकि QuerySets अलग-अलग ऑब्जेक्ट्स हैं, भले ही उनमें एक ही मॉडल उदाहरण हों।
मैं कैसे परीक्षण करूं कि दो क्वेरीसेट्स में एक ही डेटा है? मैं हर सही ढंग से यह परीक्षण कर रहा हूँ? यह मेरा चौथा दिन है जो डैंजो सीख रहा है, इसलिए यदि संभव हो तो मैं सर्वोत्तम प्रथाओं को जानना चाहता हूं। धन्यवाद।
बहुत बढ़िया, यह उपयोगी है, हालांकि अब मेरा परीक्षण इस वजह से विफल रहता है: AssertionError: [ '< उत्पाद: उत्पाद ऑब्जेक्ट> ']! = [<उत्पाद: उत्पाद ऑब्जेक्ट>] मुझे लगता है कि केवल एक ही अंतर यह है कि पहले उत्पाद ऑब्जेक्ट के आसपास उद्धरण हैं। वे दोनों क्लास QuerySet – jz999
नए प्रश्न कोड के साथ अपना प्रश्न अपडेट करें। :) – girasquid
बस किया गया, धन्यवाद – jz999