मैं उन कार्यों के परिवार के लिए यूनिट परीक्षण लागू कर रहा हूं जो सभी कई आविष्कार साझा करते हैं। उदाहरण के लिए, दो मैट्रिस के साथ फ़ंक्शन को कॉल करना ज्ञात आकार का मैट्रिक्स उत्पन्न करता है।पायथन एकजुट ढांचे में मैं कई समान यूनिट परीक्षणों को संक्षेप में कैसे कार्यान्वित कर सकता हूं?
मैं प्रत्येक संपत्ति के लिए एक व्यक्तिगत परीक्षण केस लिखने के बिना, इस संपत्ति के कार्यों के पूरे परिवार का परीक्षण करने के लिए इकाई परीक्षण लिखना चाहता हूं (विशेष रूप से बाद में अधिक कार्यों को बाद में जोड़ा जा सकता है)।
एक तरह से यह करने के लिए इन कार्यों की एक सूची से अधिक पुनरावृति करने के लिए होगा:
import unittest
import numpy
from somewhere import the_functions
from somewhere.else import TheClass
class Test_the_functions(unittest.TestCase):
def setUp(self):
self.matrix1 = numpy.ones((5,10))
self.matrix2 = numpy.identity(5)
def testOutputShape(unittest.TestCase):
"""Output of functions be of a certain shape"""
for function in all_functions:
output = function(self.matrix1, self.matrix2)
fail_message = "%s produces output of the wrong shape" % str(function)
self.assertEqual(self.matrix1.shape, output.shape, fail_message)
if __name__ == "__main__":
unittest.main()
मैं Dive Into Python से इस के लिए विचार आया। वहां, यह परीक्षण किए जा रहे कार्यों की एक सूची नहीं है बल्कि ज्ञात इनपुट-आउटपुट जोड़े की एक सूची है। इस दृष्टिकोण के साथ समस्या यह है कि यदि सूची का कोई भी तत्व परीक्षण में विफल रहता है, तो बाद के तत्वों का परीक्षण नहीं होता है।
मैंने unittest subclassing को देखा। टेस्टकेस और किसी भी तरह से एक तर्क के रूप में परीक्षण करने के लिए विशिष्ट कार्य प्रदान करते हैं, लेकिन जहां तक मैं कह सकता हूं कि हमें unittest.main() का उपयोग करने से रोकता है क्योंकि तर्क पारित करने का कोई तरीका नहीं होगा टेस्टकेस के लिए।
मैंने लैमडेबा के साथ सेटैटर का उपयोग करके टेस्टकेस में "टेस्टसोमिंग" फ़ंक्शन को गतिशील रूप से संलग्न करने पर भी देखा, लेकिन टेस्टकेस उन्हें पहचान नहीं पाया।
मैं इसे कैसे लिख सकता हूं ताकि परीक्षणों की सूची का विस्तार करने के लिए यह छोटा हो, जबकि अभी भी प्रत्येक परीक्षण चल रहा है?
संबंधित सवाल: http://stackoverflow.com/प्रश्न/328 99/कैसे-से-जेनरेट-डायनामिक-यूनिट-टेस्ट-इन-पायथन – jfs