2010-09-22 13 views
5

के साथ unittest.main() का आह्वान करें मैं अजगर के साथ unittests बना रहा हूँ। मैं किसी भी स्वचालित परीक्षण खोज का उपयोग नहीं कर रहा हूँ। मैं TestCases को TestSuite मैन्युअल रूप से एक साथ जोड़ रहा हूं।पाइथन unittest - एक कस्टम testSuite

मैं unittest.TextTestRunner().run(suite) साथ इन परीक्षणों चला सकते हैं, मैं इतना है कि मैं कमांड लाइन विकल्प (जैसे -v/--failfast) का उपयोग कर सकते हैं उन्हें unittest.main() साथ चलाने के लिए चाहते हैं। प्रलेखन का कहना है कि unittest.main() एक टेस्टरुनर विकल्प ले सकता है।

को TestRunner में कैसे परिवर्तित करें?

+1

टेस्टसूइट और टेस्टरुनर के पास ** एक दूसरे के साथ ** कुछ भी नहीं है। एक सूट परीक्षण का संग्रह है। एक धावक परीक्षण का संग्रह निष्पादित करता है। आप एक को दूसरे में नहीं बदलते हैं। आप धावक को सूट प्रदान करते हैं (आमतौर पर 'unittest.main()' के माध्यम से।) –

+0

मैं unittest.main() को testuite कैसे प्रदान करूं? या मैं एक टेस्टरुनर कैसे बना सकता हूं जो एक टेस्टसुइट चलाएगा (कि मैं unittest.main() को पास कर सकता हूं) – Rory

+1

क्या आप बस अपने टेस्टरनर को 'असफल' पास करने का प्रयास कर रहे हैं? यदि आप स्रोत पढ़ते हैं, तो testrunner की एक अनियंत्रित सुविधा यह है कि यह 'विफल' पैरामीटर स्वीकार करता है। –

उत्तर

-2

यह सुनिश्चित करने के अलावा कुछ भी नहीं करें कि आपके पास यह आपके यूनिट परीक्षण मॉड्यूल में है।

if __name__ == '__main__': 
    unittest.main(failfast=True) 

http://docs.python.org/library/unittest.html#unittest.main

प्रलेखन से ...

unittest.main(failfast=True, testRunner=unittest.TextTestRunner) 
+0

मैं unittest.main() की टेस्ट ऑटोडिसवरी का उपयोग नहीं कर रहा हूं, मैं टेस्टसुइट तैयार कर रहा हूं। अगर मैं unittest.main का उपयोग करता हूं जैसा कि आप सुझाव देते हैं कि यह मेरे परीक्षण नहीं चलाएगा। मैंने कोशिश की। – Rory

+0

हाथ-कटाई क्यों? मुख्य परीक्षण आपके ऑडोडिस्कवर क्यों नहीं करेंगे? आपके परीक्षण superclasses क्या हैं? आपके टेस्ट नाम क्या हैं? यह मेरे लिए पूरी तरह से काम करता है। तुम क्या गलत कर रहे हो –

+0

मैं ऑटोडिस्कवर का उपयोग नहीं कर रहा हूं क्योंकि मैं फ़ंक्शन के लिए ज्ञात मान्य इनपुट के आधार पर टेस्टकेस बना रहा हूं। मैं इस दृष्टिकोण का उपयोग कर रहा हूं http://stackoverflow.com/questions/2798956/python-unittest-generate-multiple-tests-programmatically/3772008#3772008 – Rory

2

How to run a testsuite with unittest.main के पास डुप्लिकेट (उत्तर प्रतिलिपि और चिपकाया):

आप एक TestSuite को पारित नहीं हो सकता मुख्य, unittest.main.TestProgram (जो unittest.main वास्तव में है) के निर्माता का पता लगाएं और यह वर्ग कैसे काम करता है। पहला तर्क यदि मॉड्यूल नाम कुछ भी है, तो परीक्षण नहीं।

main() वास्तव में sys.argv से अपने तर्क लेता है, क्योंकि वास्तव में यह कमांड लाइन से उपयोग किया जाता है, न कि किसी प्रोग्राम के भीतर से। सुविधा के लिए ऐसा करना आम बात है।