2013-06-23 8 views
10

मैं आइटम की एक सूची पर पुन: प्रयास करना चाहता हूं, और उनमें से प्रत्येक पर एक दावा चला सकता हूं। एक उदाहरण यह जांच सकता है कि सूची में प्रत्येक संख्या विषम है या नहीं।Instantiate Python unittest.TestCase तर्क के साथ

TestCase:

class TestOdd(unittest.TestCase): 
    def runTest(self): 
     """Assert that the item is odd""" 
     self.assertTrue(NUMBER %2==1, "Number should be odd") 

टेस्ट suite:

if __name__ == '__main__': 
    suite = unittest.TestSuite() 
    suite.addTest(TestOdd()) 
    # I would like to have: 
    # suite.addTest(TestOdd(1)) 
    # suite.addTest(TestOdd(2)) 
    # suite.addTest(TestOdd(3)) 
    # ... 
    unittest.main() 

मैं एक तर्क के साथ एक TestOdd वस्तु का दृष्टांत कैसे - उदाहरण के लिए, संख्या परीक्षण किया जाना?

अद्यतन: 2011 से एक ब्लॉग पोस्ट के अनुसार (उत्तर के रूप में पोस्ट किया गया), पैरामीट्रिज्ड परीक्षणों के लिए कोई अंतर्निहित तंत्र नहीं है। मुझे किसी क्लीनर समाधान को स्वीकार करने में खुशी होगी।

+0

भी देखें: //codereview.stackexchange: (http [से वर्ग argparse तर्क को एक्सेस करना]। कॉम/क्यू/88655/15346) सीआर में – kenorb

उत्तर

4

कक्षा गुणों का उपयोग करके भी हासिल किया जा सकता है।

class TestOdd1(unittest.TestCase): 
    NUMBER=1 
    def runTest(self): 
     """Assert that the item is odd""" 
     self.assertTrue(self.NUMBER % 2 == 1, "Number should be odd") 

class TestOdd2(TestOdd1): 
    NUMBER=2 

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

unittesting उन्हें स्वचालित रूप से एक सूट बनाने की आवश्यकता की खोज है, तो होगा।

आप आधार वर्ग के लिए एक testcase का उपयोग कर से बचने के लिए चाहते हैं, आप एकाधिक वंशानुक्रम का उपयोग कर सकते हैं:

from unittest import TestCase, main 

class TestOdd: 
    def runTest(self): 
     """Assert that the item is odd""" 
     self.assertTrue(self.NUMBER % 2 == 1, "Number should be odd") 

class TestOdd1(TestOdd, TestCase): 
    NUMBER=1 
class TestOdd2(TestOdd, TestCase): 
    NUMBER=2 

if __name__ == '__main__': 
    main() 
9

"Python unit testing: parametrized test cases", एली बेन्देर्स्क्य के ब्लॉग में प्रकाशित के अनुसार:

पायथन के मानक पुस्तकालय unittest महान है और मैं इसे हर समय का उपयोग करें। हालांकि, इसमें से एक चीज़ गुम है, पैरामीट्रिज्ड परीक्षण मामलों को चलाने का एक आसान तरीका है। दूसरे शब्दों में, आप तर्कों को आसानी से एक unittest.TestCase में बाहर से नहीं पारित कर सकते हैं।

एली का समाधान unittest.TestCase को ParametrizedTestCase में विरासत में मिला रहा है। मुझे कॉपीराइट मुद्दों के बारे में निश्चित नहीं है, इसलिए मैं कोड को कॉपी-पेस्ट नहीं करूँगा।

यदि कोई बेहतर समाधान है, तो मुझे इसे स्वीकार करने में खुशी होगी।

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