Django görünümlerimi test etmeye çalışıyorum. Bu görüş şablona bir Sorgu Kümesi geçirir:Django QuerySets'in eşit olduğunu nasıl test ederim?
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))
ve test:
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())
DÜZENLEME yerine self.assertListEqual ait self.assertQuerysetEqual kullanıyorum . Ne yazık ki bu hala çalışır ve yok terminali görüntüler bu: ['<Product: Product object>'] != [<Product: Product object>]
assertListEqual yükseltir: 'QuerySet' nesne assertEqual self.assertSetEqual(response.context['product_list'][0], merchant.products.all()[0])
geçmesi olmasına rağmen, ya da çalışmaz hiçbir özellik 'fark' sahiptir.
Bunun nedeni, QuerySet'lerinin aynı model örneklerini içermelerine rağmen farklı nesneler oldukları için farz ediyorum.
İki QuerySets'in aynı verileri içerdiğini nasıl sınarım? Bunu doğru bir şekilde test ediyor muyum? Bu benim dördüncü günüm Django'yu öğreniyor, böylece mümkünse en iyi uygulamaları öğrenmek istiyorum. Teşekkürler.
Başar, bu, yararlı olur: AssertionError: [ '< Ürün: Ürün nesnesi> ']! = [<Ürün: Ürün nesnesi>] Gördüğüm tek fark, ilk ürün nesnesinin etrafında tırnak işaretleri bulunmasıdır. Her ikisi de sınıf QuerySet – jz999
Sorunuzu yeni test koduyla güncelleyin. :) – girasquid
Sadece yaptım, teşekkürler – jz999