क्या कोई मुझे बता सकता है कि पोस्टग्रेस डीबी त्रुटियों, विशेष रूप से IntegrityError का सही तरीके से परीक्षण कैसे करें। उदाहरण के लिए मैं अगले परीक्षण है:django Postgres IntegrityError
class TestSlugs(TestCase):
# This slug must be unique
b = BookPublisher(slug=self.duplicate_slug)
self.assertRaises(IntegrityError, b.save)
#check if there's only one BookPublisher
self.assertEquals(BookPublisher.objects.count(), 1)
यहाँ यह IntegrityError पकड़ता है, लेकिन फिर सब संक्रिया असफल हो जायेगी, क्योंकि है कि कैसे काम करता है postgres, ठीक है। मैं दस्तावेज़ों में देखता हूं कि मैं लेनदेन का उपयोग कर सकता हूं .rollback() लेकिन कहां: परीक्षण में या सहेजने() विधि में?
इसके अलावा, मुझे हाथ से रोलबैक लिखने का विचार पसंद नहीं है, क्यों नहीं django बस सहेजने का प्रयास कर सकता है, और यदि यह विफल रहता है - मुझे ईमानदारी त्रुटि दें और मुझे काम जारी रखने दें।
मैं Django उपयोग कर रहा हूँ 1.1
ठीक है धन्यवाद। तो लाइव कोड में, IntegrityError को पकड़ने के बाद सब ठीक हो जाएगा? या मुझे अभी भी स्पष्ट रूप से रोलबैक करना चाहिए? –
आपको कभी भी अपने कोड में IntegrityError का कारण बनना चाहिए, और किसी भी SQL त्रुटि को बग के रूप में व्यवहार करना चाहिए। इसलिए आपको कुछ संशोधन करने से पहले जांच करनी चाहिए कि क्या यह संशोधन समझदार होगा। यदि आपको लगता है कि संशोधन नहीं किया जा सकता है, तो आप रोलबैक कर सकते हैं और उपयोगकर्ता को समस्या की रिपोर्ट कर सकते हैं। या आप संशोधन को छोड़ने या इसके बजाय एक अलग संशोधन करने का निर्णय ले सकते हैं। –