2012-08-17 34 views
21

को लागू करने का प्रयास कर रहा है मेरे पास दो टेस्ट केस (दो अलग-अलग फाइलें) हैं जिन्हें मैं टेस्ट सूट में एक साथ चलाने के लिए चाहता हूं। मैं सिर्फ "सामान्य" पायथन चलाकर परीक्षण चलाने के लिए प्राप्त कर सकता हूं, लेकिन जब मैं एक पायथन-यूनिट परीक्षण चलाने के लिए चुनता हूं तो यह कहता है कि 0 परीक्षण चलते हैं। अभी मैं केवल कम से कम एक परीक्षण चलाने की कोशिश कर रहा हूं।पायथन टेस्टसूइट

import usertest 
import configtest # first test 
import unittest # second test 

testSuite = unittest.TestSuite() 
testResult = unittest.TestResult() 
confTest = configtest.ConfigTestCase() 
testSuite.addTest(configtest.suite()) 
test = testSuite.run(testResult) 
print testResult.testsRun # prints 1 if run "normally" 

यहाँ मेरी परीक्षण मामले का एक उदाहरण

class ConfigTestCase(unittest.TestCase): 
    def setUp(self): 

     ##set up code 

    def runTest(self): 

     #runs test 


def suite(): 
    """ 
     Gather all the tests from this module in a test suite. 
    """ 
    test_suite = unittest.TestSuite() 
    test_suite.addTest(unittest.makeSuite(ConfigTestCase)) 
    return test_suite 

if __name__ == "__main__": 
    #So you can run tests from this module individually. 
    unittest.main() 

की स्थापना की है क्या मैं इस काम को सही ढंग से प्राप्त करने के लिए मुझे क्या करना होगा?

उत्तर

38

आप एक परीक्षण का उपयोग करना चाहते हैं। तो आपको unittest.main() को कॉल करने की आवश्यकता नहीं है। testsuit की उपयोग इस तरह किया जाना चाहिए ..

#import usertest 
#import configtest # first test 
import unittest # second test 

class ConfigTestCase(unittest.TestCase): 
    def setUp(self): 
    print 'stp' 
     ##set up code 

    def runTest(self): 

     #runs test 
    print 'stp' 

def suite(): 
    """ 
     Gather all the tests from this module in a test suite. 
    """ 
    test_suite = unittest.TestSuite() 
    test_suite.addTest(unittest.makeSuite(ConfigTestCase)) 
    return test_suite 

mySuit=suite() 


runner=unittest.TextTestRunner() 
runner.run(mySuit) 
+0

सिर्फ धन्यवाद –

+0

द्वारा कोड चलाने के लिए, मैं क्या जरूरत के लिए पूरी तरह से काम किया धन्यवाद। बहुत बहुत धन्यवाद! – avoliva

+2

इस उत्तर के लिए आपको बहुत बहुत धन्यवाद। * मौजूदा * सूट में परीक्षण जोड़ने के लिए मुझे पृथ्वी पर क्यों 'unittest.makeSuite' को कॉल करने की आवश्यकता है? – timgeb

4

लोडर और सूट बनाने के लिए सभी कोड अनावश्यक है। आपको अपने परीक्षण लिखना चाहिए ताकि वे आपके पसंदीदा परीक्षण धावक का उपयोग करके परीक्षण खोज के माध्यम से चल सकें। इसका मतलब है कि अपने तरीकों को एक मानक तरीके से नामित करना, उन्हें एक आयात करने योग्य स्थान में रखना (या धावक को उनके साथ एक फ़ोल्डर गुजरना), और unittest.TestCase से विरासत में रखना। ऐसा करने के बाद, आप आसानी से python -m unittest discover का उपयोग कर सकते हैं, या एक अच्छे तीसरे पक्ष के धावक को खोजने के लिए और फिर अपने परीक्षण चला सकते हैं।

0

मैं तुम्हें मॉड्यूल है कि दो परीक्षण समेकित खिलाफ अजगर-इकाई परीक्षण चल रहा है की बात कर रहे संभालने कर रहा हूँ। यदि आप उस मॉड्यूल यानी के लिए टेस्ट केस बनाते हैं तो यह काम करेगा। unittest.TestCase subclassing और एक सरल परीक्षण है कि 'परीक्षण' शब्द से शुरू होता है।

उदा।

class testall(unittest.TestCase): 

    def test_all(self):   
     testSuite = unittest.TestSuite() 
     testResult = unittest.TestResult() 
     confTest = configtest.ConfigTestCase() 
     testSuite.addTest(configtest.suite()) 
     test = testSuite.run(testResult) 
     print testResult.testsRun # prints 1 if run "normally" 

if __name__ == "__main__": 
     unittest.main() 
1

आप मैन्युअल रूप से TestCase रों एकत्र करने के लिए कोशिश कर रहे हैं, यह उपयोगी है: unittest.loader.findTestCases():

# Given a module, M, with tests: 
mySuite = unittest.loader.findTestCases(M) 
runner = unittest.TextTestRunner() 
runner.run(mySuit)