2011-12-13 18 views
6

पास की बजाय त्रुटि के रूप में गिना जा रहा है, मैं expectedFailure का उपयोग कर रहा हूं क्योंकि एक बग है जिसे मैं रिकॉर्ड करना चाहता हूं कि मैं अभी ठीक नहीं कर सकता, लेकिन भविष्य में इसे वापस आना चाहता हूं। expectedFailure की मेरी समझ यह है कि यह परीक्षा उत्तीर्ण की जाएगी, लेकिन सारांश में कहा गया है कि अपेक्षित असफलताओं की संख्या x थी (इसी तरह यह छोड़े गए टेट के साथ कैसे काम करता है)।अपेक्षित विफलता

$ ./manage.py test eav.QueryTest 
Creating test database for alias 'default'... 
.EE 
====================================================================== 
ERROR: test_q_object_with_exclude (eav.tests.managers.QueryTest) 
---------------------------------------------------------------------- 
_ExpectedFailure 

====================================================================== 
ERROR: test_q_objects_unioned (eav.tests.managers.QueryTest) 
---------------------------------------------------------------------- 
_ExpectedFailure 

---------------------------------------------------------------------- 
Ran 3 tests in 1.095s 

FAILED (errors=2) 
Destroying test database for alias 'default'... 

मैं अगर यह Django के परीक्षण धावक या कुछ और के साथ निहित है मैं गलत कर रहा हूँ यकीन नहीं है:

हालांकि, जब मैं अपने परीक्षण सूट चलाने मैं निम्नलिखित मिलता है।

@unittest.expectedFailure 
def test_q_object_with_exclude(self): 
    # Everyone except Bob 
    q_set = eav_m.Process.objects.exclude(
     Q(eav__details__city__contains='Y')) 
    self.assertEqual(q_set.count(), 4) 

उत्तर

7

expectedFailure की आपकी समझ सही है। आपकी समस्या यह है कि वे परीक्षण विफल नहीं होते हैं, वे एक अपवाद उठाते हैं जो असफल होने जैसा नहीं है।

जिस सजावट को आप ढूंढ रहे हैं वह skip है।

+1

@ जोनाथन हार्टली वास्तव में नहीं। टेस्ट 2 तरीकों से विफल अगर वे असफल होते हैं क्योंकि कुछ जोर विफल हो जाते हैं तो यह स्थिति "असफल" होती है, लेकिन अगर अपवाद की तरह कोई दुर्घटना हो जाती है, तो वह स्थिति "त्रुटि" है। अपेक्षित विफलता का मतलब है कि आप एक परीक्षण विफल होने की उम्मीद करते हैं लेकिन इसका मतलब यह नहीं है कि आप इसे दुर्घटनाग्रस्त होने की उम्मीद कर रहे थे। – binW

0

नहीं, उम्मीद विफलता नहीं देखते, मदद करने के लिए आप नकारात्मक परीक्षण लिखते हैं कि के लिए self.assertNotEqual का उपयोग करें। अपेक्षित विफलता का प्रयोग उस परीक्षण को चिह्नित करने के लिए किया जाता है जिसे आप जानते हैं, और आप उस तथ्य को स्वीकार करते हैं। असफल होने से यह कह रहा है कि आपकी पावती अमान्य है।

+0

प्रतिक्रिया के लिए धन्यवाद, लेकिन मैं एक नकारात्मक परीक्षण लिखने की कोशिश नहीं कर रहा हूं। 'Self.assertEqual (q_set.count(), 4) के ऊपर नमूना कोड में सही है। गिनती 4 होनी चाहिए, लेकिन एक बग है जो इसे एक अलग मूल्य वापस करने और असफल होने का कारण बनती है। इसलिए 'अपेक्षित विफलता' का उपयोग करने की आवश्यकता है। – Jashugan

+0

मैं इस प्रतिक्रिया को कम करता हूं क्योंकि यह समस्या का समाधान नहीं करता है। – Stan

0

आपको SO question पर एक नज़र रखना चाहिए क्योंकि यह सही व्यवहार नहीं है। यदि परीक्षण विफल रहता है तो expectedFailure सजावट should not be counted as a failure के साथ एक परीक्षण।

+1

सिर के लिए धन्यवाद। मैंने अभी तक सब कुछ खरोंच से पुनर्निर्माण की कोशिश नहीं की है। हालांकि, मैंने इस सिद्धांत पर 'सूडो ढूंढ/ऑप्ट-टाइप एफ-रेगेक्स' * \। पीईसी-डिलीट 'चलाया था, शायद समस्या उत्पन्न करने वाली पीईसी फाइलों को संकलित किया गया था। दुर्भाग्य से इस समस्या को हल नहीं किया। – Jashugan

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