2013-04-15 5 views
5

मैंने पायथन unittest प्रारूप का उपयोग करके पाइथन परीक्षणों का अपना गुच्छा बनाया।पाइथन को अनजाने परीक्षणों को कैसे क्रमबद्ध करें?

अब मैं उन्हें

python -m unittest discover -s TestDirectory -p '*.py' -v 

मैं उन सभी पाता है, और उन्हें चलाता है के साथ चलाने के लिए सक्षम हूँ।

अब एक सूक्ष्म अंतर है कि क्या मैं विंडोज़ या लिनक्स पर परीक्षण चलाता हूं। दरअसल, विंडोज़ पर परीक्षण वर्णमाला क्रम में चलाए जाते हैं, जबकि लिनक्स पर परीक्षण किसी भी मानव विशिष्ट खोज योग्य क्रम में नहीं चलते हैं, भले ही हमेशा वही हों।

समस्या का परीक्षण परीक्षण के निष्पादन के क्रम को क्रमबद्ध करने के लिए परीक्षण फ़ाइल के पहले दो अक्षरों पर निर्भर करता है। ऐसा नहीं है कि उन्हें एक विशिष्ट क्रम में चलाना है, लेकिन किसी प्रकार का सूचना परीक्षण है, जो उनके आउटपुट में संस्करण डेटा को परीक्षण रन लॉग में पहले प्रदर्शित करने के लिए दिखा रहा है।

क्या लिनक्स पर वर्णमाला क्रम में परीक्षण चलाने के लिए मैं कुछ कर सकता हूं?

+0

क्या आपने नोसेटेट की कोशिश की है? मुझे आश्चर्य है कि चलने वाले नोसेटेट्स में कोई फर्क पड़ता है। मैं अनजान से खोज का उपयोग नहीं करता क्योंकि नोजेटेस्ट बहुत अच्छी तरह से कर सकते हैं। क्या आपने कोशिश की है? – CppLearner

+0

बस कोशिश की। ऐसा लगता है कि परीक्षण लिनक्स पर क्रमबद्ध हैं। धन्यवाद। लेकिन मैं डेवलपर्स को नाक स्थापित करने के लिए मजबूर करना चाहता हूं, और केवल एकीकृत 'unittest' के साथ सादे पायथन का उपयोग करें। –

+0

जब मैं इसे लिनक्स के तहत अपने यूनिट परीक्षणों के लिए चलाता हूं, तो यह उन्हें निम्न क्रम में टाइप करता है: पहले फ़ाइल या निर्देशिका नाम से, कक्षा के नाम से अधीन, परीक्षण (विधि) नाम से अधीनस्थ। बात यह है कि, परीक्षण चलाते समय, परीक्षण * नाम * पहले दिखाए जाते हैं, जो केवल अंतिम सबबॉर्डरिंग होता है, और किसी भी तार्किक क्रम के साथ प्रकट नहीं होता है। मैं सिर्फ यह जांचना चाहता हूं कि आपकी स्पष्ट गैर-ऑर्डरिंग वास्तव में उपर्युक्त फ़ाइल/निर्देशिका - क्लास-विधि ऑर्डरिंग है? – Evert

उत्तर

0

मैंने यह कोशिश नहीं की है, लेकिन मुझे कल्पना है कि एक चीज जो आप कर सकते हैं टेस्टसूइट क्लास को सॉर्ट फ़ंक्शन जोड़ने के लिए ओवरराइड कर रहा है। फिर आप अनावश्यक रन फ़ंक्शन को कॉल करने से पहले सॉर्ट फ़ंक्शन को कॉल कर सकते हैं। तो, एक 'AllTests.py' स्क्रिप्ट में, आप इस तरह कुछ जोड़ सकते हैं:

class SortableSuite(unittest.TestSuite): 
    def sort(self): 
     self._tests.sort(cmp=lambda x,y: x._testMethodName < y._testMethodName) 
    def run(self,testResult): 
     #or if you don't want to run a sort() function, you can override the run 
     #function to automatically sort. 
     self._tests.sort(cmp=lambda x,y: x._testMethodName < y._testMethodName) 
     return unittest.TestSuite.run(self,testResult) 

loader = unittest.TestLoader() 
loader.suiteClass = SortableSuite 
suite = loader.loadTestFromTestCases(collectedTests) 
suite.sort() 
suite.run(defaultTestResult()) 
संबंधित मुद्दे