اذهب إلى المحتوى
  • 0

كيفية إستخدام إستثناء DoesNotExist في جانغو Django؟

Mohssen A Mohssen

السؤال

أحاول أن أقوم بكتابة وحدة إختبار Unit Test للتأكد من حذف كائن object لذلك قمت بكتابة الكود التالي:

from django.utils import unittest

def test_user_can_delete_question_response(self):
  # ...
  self._driver.get("http://localhost:5000/questions/3") 
  self.assertRaises(Answer.DoesNotExist, Answer.objects.get(body__exact = '<p>User can reply to question\'s answers.</p>'))

لكن المشكلة هي ظهور الخطأ التالي بإستمرار:

DoesNotExist: Answer matching query does not exist.

ما هو الخطأ هنا وكيف أقوم بحله؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

المشكلة هو أنك تقوم باستدعاء الدالة get - التي بدورها تُظهِر الخطأ - قبل أن تصل إلى assertRaises.

الحل هو أن تقوم بالفصل بين الدالة get  وبين قيمها (arguments) كما هو مبين في المرجع الخاص بال unitests. 

from django.utils import unittest

def test_user_can_delete_question_response(self):
  # ...
  self._driver.get("http://localhost:5000/questions/3") 
  # هنا تقوم بالفصل بين الدالة وبين قيمها
  self.assertRaises(Answer.DoesNotExist, Answer.objects.get, body__exact = '<p>User can reply to question\'s answers.</p>')

أو يوجد حل آخر هو استعمال with:

from django.utils import unittest

def test_user_can_delete_question_response(self):
  # ...
  self._driver.get("http://localhost:5000/questions/3") 
  with self.assertRaises(Answer.DoesNotExist):
    Answer.objects.get(body__exact = '<p>User can reply to question\'s answers.</p>')
 

لمزيد من المعلومات يرجى زيارة المرجع على الرابط التالي TestCase.assertRaises

تم التعديل في بواسطة مسعود زاهي
رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...