2012-10-01 13 views
15

मेरे unittest फ़ोल्डर इस तरह से आयोजित किया जाता है।अजगर सबफ़ोल्डर के साथ खोज unittest

. 
|-- import 
| |-- import.kc 
| |-- import.kh 
| `-- import_test.py 
|-- module 
| |-- module.kc 
| |-- module.kh 
| `-- module_test.py 
`-- test.py 

मैं बस मेरी *_test.py से प्रत्येक अजगर मॉड्यूल unittest का उपयोग कर चलाने के लिए test.py चलाना चाहते हैं चाहते हैं। वर्तमान में, मेरी test.py

#!/usr/bin/env python 

import unittest 

if __name__ == "__main__": 
    suite = unittest.TestLoader().discover('.', pattern = "*_test.py") 
    unittest.TextTestRunner(verbosity=2).run(suite) 

शामिल अजगर प्रलेखन कि यह स्वचालित रूप से उप-फ़ोल्डर में अपने परीक्षण की खोज करना चाहिए कहते हैं। लेकिन ऐसा नहीं है।

फिलहाल, यह केवल आउटपुट

---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 

मैं इसे, मेरे *_test.py फ़ाइल के साथ एक समस्या नहीं है क्योंकि जब मैं उन्हें रूट निर्देशिका में ले जाते हैं, यह ठीक काम करता है यकीन है .. क्या बजे मैं गलत कर रहा हूँ?

उत्तर

19

और module निर्देशिका में __init__.py जोड़ें।

+0

यह सिर्फ '__init __। Py' फ़ाइल को छूने से काम किया है, तो आप धन्यवाद। क्या आप मुझे समझा सकते हैं कि मुझे ऐसा क्यों करना है? और क्या कोई और समाधान है? क्योंकि मैं अन्य लोगों के साथ काम कर रहा हूं, और मैं परीक्षण करना संभवतः सबसे आसान तरीका बनाना चाहता हूं। – tomahh

+2

यह परीक्षण खोज लागू करने के तरीके का एक आर्टिफैक्ट है। अनिवार्य रूप से, प्रत्येक निर्देशिका जिसमें एक परीक्षण होता है उसे पाइथन मॉड्यूल के रूप में आयात करने योग्य होना चाहिए। अधिक जानकारी के लिए [डॉक्स] (http://docs.python.org/2/library/unittest.html#test-discovery) देखें। –

2

यदि आप स्विच करने में सक्षम हैं, तो वेनिला unittest मॉड्यूल के बजाय nose का उपयोग करने पर विचार करें। आपको अपनी खुद की test.py फ़ाइल या कुछ भी के साथ गड़बड़ करने की आवश्यकता नहीं होगी; nosetests का एक रन आपके सभी परीक्षणों को ढूंढ और चलाएगा।

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