मेरे पास कई कक्षाएं हैं जो कुछ आविष्कार साझा करती हैं और एक आम इंटरफ़ेस है, और मैं स्वचालित रूप से उनमें से प्रत्येक के लिए एक ही परीक्षण चलाने के लिए चाहता हूं।विभिन्न कक्षाओं के लिए एक ही परीक्षण-केस कैसे चलाएं?
उदाहरण के तौर पर, मान लीजिए कि मेरे पास कई कक्षाएं हैं जो डेटा सेट को विभाजित करने के लिए विभिन्न दृष्टिकोण लागू करती हैं। यहां आम आविष्कार होगा, कि इन सभी वर्गों के लिए सभी विभाजनों पर संघ मूल डेटा-सेट के बराबर होना चाहिए।
class PartitionerInvariantsTests(unittest.TestCase):
def setUp(self):
self.testDataSet = range(100) # create test-data-set
def impl(self, partitioner):
self.assertEqual(self.testDataSet,
chain.from_iterable(partitioner(self.testDataSet))
तो मुझे लगता है कि कक्षाओं में मुझे लगता है कि वर्ग का एक उदाहरण के साथ परीक्षण करना चाहते से प्रत्येक के लिए impl
कॉल एक अलग समारोह जोड़ें:
कुछ इस तरह दिखता मैं वर्तमान में क्या कर सकते है। एक से अधिक परीक्षण-समारोह के लिए ऐसा करने पर समस्या के साथ समस्या स्पष्ट हो जाती है। मान लीजिए मेरे पास 5 टेस्ट-फ़ंक्शंस और 5 कक्षाएं हैं जिन्हें मैं परीक्षण करना चाहता हूं। यह 25 कार्यों को बनाएगा जो सभी परीक्षणों का आह्वान करने के लिए लगभग समान दिखते हैं।
एक और दृष्टिकोण जो मैं सोच रहा था, टेम्पलेट को एक सुपर-क्लास के रूप में कार्यान्वित करना था, और फिर प्रत्येक कक्षा के लिए एक उप-वर्ग बनाना चाहता था जिसे मैं परीक्षण करना चाहता हूं। उप-वर्ग कक्षा को तुरंत चालू करने के लिए एक समारोह प्रदान कर सकता है। इसके साथ समस्या यह है कि डिफ़ॉल्ट परीक्षण-लोडर (अनुपयोगी) बेस-क्लास को वैध परीक्षण-केस पर विचार करेगा और इसे चलाने का प्रयास करेगा, जो असफल होगा।
तो, आपके सुझाव क्या हैं?
पी.एस .: मैं उपयोग कर रहा हूँ अजगर 2.6
बेस क्लास को चलाने की कोशिश नहीं करेगा यदि यह 'unittest.TestCase' से प्राप्त नहीं होता है? – nmichaels
@ नाथन: अब जब आप इसे कहते हैं, मैंने अभी तक कोशिश नहीं की है। –
@ नाथन, अगर आप अपने विचार को उत्तर के रूप में पोस्ट करना चाहते हैं, तो मैं खुशी से मेरा हटा दूंगा। – unutbu