2011-05-02 19 views
6

विफल रहा है मैं सॉफ्टवेयर क्यूए के लिए एक उपकरण के रूप में अजगर का उपयोग करने के सीखने के चरण में हूं।पायथन सिद्धांत: अपेक्षित परिणाम "मिल गया" परिणाम जैसा ही है लेकिन परीक्षण

मैंने पाठ फ़ाइल संख्या मैट्रिक्स में 'ए' अक्षर खोजने के लिए अगला सरल परीक्षण लिखा था। समस्या यह है कि परीक्षण विफल रहता है भले ही उम्मीद मुझे मिलती है।

वह क्यों है? क्या आप मुझे बता सकते हैं कि मैं क्या गलत कर रहा हूं?

परीक्षण स्क्रिप्ट:

fin = open("abc.txt", "r") 

arr_fin = [] 

for line in fin: 
    arr_fin.append(line.split()) 

print arr_fin 

for row in arr_fin:  
    arr_fin_1 = " ".join('{0:4}'.format(i or " ") for i in row) 
    print arr_fin_1 



def find_letter(x, arr_fin_1): 
    """ 
    >>> find_letter('a', arr_fin_1) 
    97 
    """ 
    t=ord(x) #exchange to letter's ASCII value 
    for i in arr_fin_1: 
     if i==x: 
      print t 
      return; 

def _test(): 
    import doctest 
    doctest.testmod() 

if __name__ == "__main__": 
    _test() 

त्रुटि संदेश:

Expected: 
    97 
Got: 
    97 
********************************************************************** 
1 items had failures: 
    1 of 1 in __main__.find_letter 
***Test Failed*** 1 failures. 
+0

प्रश्न के लिए +1: इस तरह की त्रुटि बनाना बहुत आसान है: -/ –

उत्तर

2

यह:

return; 

अपने समारोह वापसी None बनाता है।

क्या आपका मतलब return t था?


इसके अलावा, IMHO doctest परीक्षण स्वयं निहित होने के लिए हैं। यह कुछ ऐसा है जो उपयोगकर्ता को आपके दस्तावेज़ में देखना चाहिए और संदर्भ के बिना समझना चाहिए। आपके उदाहरण में, आप मॉड्यूल-स्थानीय arr_fin_1 ऑब्जेक्ट का उपयोग कर रहे हैं जो उपयोगकर्ता के लिए पूरी तरह से अपारदर्शी है। find_letter कॉल से पहले स्वयं को निहित उदाहरण प्रदान करने के लिए इसे सबसे अच्छा तरीके से परिभाषित करना बेहतर है।

+1

असल में इस मामले में, या तो "प्रिंट टी" या "रिटर्न टी" सबसे व्यस्त पास लगता है, जब तक आप इसे हटाते हैं अंतरिक्ष @ फ्रैंक श्मिट ने उल्लेख किया। दोनों "प्रिंट टी" और "रिटर्न टी" होने से सबसे अच्छा _fail_ होता है क्योंकि यह 97 _twice_ प्राप्त करता है। –

+0

लेकिन मैं मानता हूं कि यह सिद्धांतों का एक अजीब उपयोग है (जैसा कि मैं इसे समझता हूं, आपको दस्तावेजों के बारे में सोचना चाहिए जो आप जांच सकते हैं, अपने सॉफ्टवेयर पर क्यूए के रूप में नहीं)। उन्हें कसकर आत्मनिर्भर होना चाहिए और बाहरी संदर्भ पर निर्भर नहीं होना चाहिए। –

11

आपके पास 97 के बाद अतिरिक्त स्थान है - यदि आप इसे हटाते हैं, तो आपका परीक्षण ठीक चलना चाहिए।

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

  • कोई संबंधित समस्या नहीं^_^