2016-02-23 12 views
5

हाय मैं सूची के लिए या फ़ाइलों की संख्या के लिए गतिशील रूप से परीक्षण विधि कैसे उत्पन्न कर सकता हूं। कहें कि मेरे पास फ़ाइल 1, फ़ाइल 2 है और जेसन में इनपुट मान के साथ फाइलन है। अब मैं नीचे की तरह एक से अधिक मान के लिए एक ही परीक्षण,पायटेस्ट गतिशील रूप से परीक्षण विधि उत्पन्न करता है

class Test_File(unittest.TestCase): 
    def test_$FILE_NAME(self): 
     return_val = validate_data($FILE_NAME) 
     assert return_val 

चलाने के लिए मैं py.test चलाने के लिए वर्तमान में एचटीएमएल और JUnit रिपोर्ट

py.test test_rotate.py --tb=long --junit-xml=results.xml --html=results.html -vv 

उत्पन्न करने के लिए मैं कर रहा हूँ के लिए निम्न आदेश का उपयोग कर रहा जरूरत मैन्युअल रूप से नीचे के रूप में तरीकों को परिभाषित करने,

def test_lease_file(self): 
    return_val = validate_data(lease_file) 
    assert return_val 

def test_string_file(self): 
    return_val = validate_data(string_file) 
    assert return_val 

def test_data_file(self): 
    return_val = validate_data(data_file) 
    assert return_val 

कृपया मुझे पता है कि मैं गतिशील test_came विधि उत्पन्न करने के लिए है, जबकि रिपोर्ट देने py परीक्षण निर्दिष्ट कर सकते हैं करते हैं।

मैं बिल्कुल उम्मीद कर रहा हूँ जो इस ब्लॉग "http://eli.thegreenplace.net/2014/04/02/dynamically-generating-python-test-cases"

लेकिन ब्लॉग ऊपर unittest का उपयोग करता है और में बताया गया है कि अगर मैं का उपयोग करें कि मैं हम के रूप में जुड़नार का उपयोग करते हैं एचटीएमएल और JUnit रिपोर्ट

उत्पन्न करने में सक्षम नहीं कर रहा हूँ नीचे मैं अपनी आवश्यकता के 2 मानकों की तरह त्रुटि, प्राप्त

test_case = [] 
class Memory_utlization(unittest.TestCase): 
@classmethod 
def setup_class(cls): 
    fname = "test_order.txt" 
    with open(fname) as f: 
     content = f.readlines() 
    file_names = [] 
    for i in content: 
     file_names.append(i.strip()) 
    data = tuple(file_names) 
    test_case.append(data) 
    logging.info(test_case) # here test_case=[('dhcp_lease.json'),('dns_rpz.json'),] 

@pytest.mark.parametrize("test_file",test_case) 
def test_eval(self,test_file): 
    logging.info(test_case) 

जब मैं ऊपर मैं निम्नलिखित त्रुटि मिलती है पर अमल,

>    testMethod() 
E    TypeError: test_eval() takes exactly 2 arguments (1 given) 
+0

मुझे लगता है कि यह आपकी मदद कर सकते लगेगा? https://pytest.org/latest/parametrize.html – adarsh

उत्तर

6

This इससे आपकी सहायता कर सकता है।

आपका परीक्षण वर्ग तो जैसे

class Test_File(): 
    @pytest.mark.parametrize(
     'file', [ 
      (lease_file,), 
      (string_file,), 
      (data_file,) 
     ] 
    ) 
    def test_file(self, file): 
     assert validate_data(file) 
+0

यदि मेरे पास कक्षा नहीं है तो यह ठीक काम करता है जैसा कि सबसे पुराने फिक्स्चर दस्तावेज़ में उल्लिखित है। लेकिन जब मैं सेटअप विधि का उपयोग करता हूं और स्वयं का उपयोग करता हूं तो यह त्रुटि टाइपर त्रुटि के साथ विफल रहता है: test_eval() वास्तव में 2 तर्क लेता है (1 दिया गया) –

+0

क्या आप इसे अपने प्रश्न में एक संपादन के रूप में जोड़ सकते हैं क्योंकि यह मुझसे थोड़ा अस्पष्ट है कि आप क्या पूछ रहे हैं – adarsh

+0

@NaggappanRamukannan, 'स्वयं' को हटाने के लिए मत भूलना –

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