2012-01-25 9 views
6

मैं पायथन के unittest उपयोग कर रहा हूँ सरल कोड के साथ इसलिए की तरह:टेस्टसाइट से टेस्टकेस की सूची कैसे निकाला जा सकता हूं?

suite = unittest.TestSuite() 
suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(module1)) 
suite.addTest(unittest.defaultTestLoader.loadTestsFromTestCase(module2)) 

हालांकि, मैं के बाद वे सूट द्वारा इकट्ठा किया गया है प्रत्येक परीक्षा के लिए कुछ कस्टम काम करने के लिए इच्छुक हूँ। मैंने सोचा कि मैं कमरे में परीक्षण मामलों से अधिक पुनरावृति करने के लिए कुछ इस तरह कर सकता है:

print suite.countTestCases() 
for test in suite:    # Also tried with suite.__iter__() 
    # Do something with test 
    print test.__class__ 

हालांकि, के रूप में कई परीक्षण मामलों के लिए मैं लोड के रूप में, यह केवल कभी

3 
<class 'unittest.suite.TestSuite'> 

प्रिंट वहाँ एक रास्ता है मैं सूट से कक्षा टेस्टकेस की सभी वस्तुओं को प्राप्त कर सकता हूं? क्या कोई और तरीका है कि मुझे इसे सुविधाजनक बनाने के लिए टेस्ट केस लोड करना चाहिए?

उत्तर

5

for test in suite: 
    print test._tests 
+1

ठीक है, मुझे लगता है कि मैं यही चाहता था। मैंने _tests देखा, लेकिन मैं इसे 'प्रिंट suite._tests'' कहने की कोशिश कर रहा था। मुझे लगता है कि मैं इसे पाइथन में एक नोब होने के लिए बस इसे पकड़ूंगा। – denaje

+0

मैं जा रहा था, लेकिन स्पष्ट रूप से आपको स्वीकार करने से पहले 10 मिनट का इंतजार करना होगा। बहुत धन्यवाद! – denaje

1

मैं suite._tests में तत्वों में से कुछ के रूप में इस सुविधा का उपयोग का प्रयास करें सुइट्स खुद को कर रहे हैं:

def list_of_tests_gen(s): 
    """ a generator of tests from a suite 

    """ 
    for test in s: 
    if unittest.suite._isnotsuite(test): 
     yield test 
    else: 
     for t in list_of_tests_gen(test): 
     yield t 
0

परीक्षण की सूची प्राप्त करने की एक स्वच्छ तरीके से उपयोग करने nose2 इकट्ठा है लगाना।

$ nose2 -s <testdir> -v --plugin nose2.plugins.collect --collect-only 
test_1 (test_test.TestClass1) 
Test Desc 1 ... ok 
test_2 (test_test.TestClass1) 
Test Desc 2 ... ok 
test_3 (test_test.TestClass1) 
Test Desc 3 ... ok 
test_2_1 (test_test.TestClass2) 
Test Desc 2_1 ... ok 
test_2_2 (test_test.TestClass2) 
Test Desc 2_2 ... ok 

---------------------------------------------------------------------- 
Ran 5 tests in 0.001s 

OK 

यह वास्तव में परीक्षण नहीं चलाता है।

आप nose2 स्थापित कर सकते हैं (और यह प्लग-इन है) इस तरह:

$ pip install nose2 

और निश्चित रूप से आप इकाई परीक्षण जैसे चलाने के लिए उपयोग कर सकते हैं nose2 इस तरह या यह:

# run tests from testfile.py 
$ nose2 -v -s . testfile 

# generate junit xml results: 
$ nose2 -v --plugin nose2.plugins.junitxml -X testfile --junit-xml 
$ mv nose2-junit.xml results_testfile.xml 
संबंधित मुद्दे