2011-08-09 25 views
5

मुझे एक बड़ा पायथन सूटकेस बनाने की ज़रूरत है जिसमें अन्य सूटकेस और टेस्टकेस शामिल हैं जिन्हें मैंने पहले ही निष्पादित करने के लिए बनाया है।testuuite testuites और testcases के साथ

मैं यह कैसे कर सकता हूं?

import testFilter1 
import testFilter2 
import unittest 
import sys 

def suite(): 
    return unittest.TestSuite((\ 
     unittest.makeSuite(testFilter1.TestFilter1), 
     unittest.makeSuite(testFilter2.TestFilter2), 
     )) 


if __name__ == "__main__": 
    result = unittest.TextTestRunner(verbosity=2).run(suite()) 
    sys.exit(not result.wasSuccessful()) 

और एक testcase संरचना (Invoice.py):

from selenium import selenium 
import unittest, time, re 
from setup_tests import filename, fileForNrTest, username, password, server_url 
fileW=open(filename,'a') 


class TestInvoice(unittest.TestCase): 

    def setUp(self): 
     self.verificationErrors = [] 
     self.selenium = selenium("localhost", 4444, "*firefox", server_url) 
     self.selenium.start() 

    def test_invoice(self): 
     sel = self.selenium 
     [...] 

    def tearDown(self): 
     self.selenium.stop() 
     self.assertEqual([], self.verificationErrors) 


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

धन्यवाद

उदाहरण के लिए, यहाँ वहाँ एक suitecase (suiteFilter.py) जो मैं जोड़ना चाहते है!

उत्तर

12

आप अपने कार्यक्रम/परीक्षण मामलों और सूट की संरचना जैसी कुछ अतिरिक्त जानकारी दे सकते हैं। जिस तरह से मैं इसे करता हूं वह प्रत्येक मॉड्यूल के लिए एक सूट() को परिभाषित करता है। इसलिए मैं UserServiceTest मॉड्यूल के लिए कहना है:

def suite(): 
""" 
    Gather all the tests from this package in a test suite. 
""" 
    test_suite = unittest.TestSuite() 
    test_suite.addTest(file_tests_main.suite()) 
    test_suite.addTest(userservice_test.suite()) 
    return test_suite 


if __name__ == "__main__": 
    #So you can run tests from this package individually. 
    TEST_RUNNER = unittest.TextTestRunner() 
    TEST_SUITE = suite() 
    TEST_RUNNER.run(TEST_SUITE) 

आप इस अपनी परियोजना की जड़ तक recursevly कर सकते हैं:

def suite(): 
    """ 
     Gather all the tests from this module in a test suite. 
    """ 
    test_suite = unittest.TestSuite() 
    test_suite.addTest(unittest.makeSuite(UserServiceTest)) 
    return test_suite 

if __name__ == "__main__": 
    #So you can run tests from this module individually. 
    unittest.main() 

तब मैं प्रत्येक पैकेज के लिए एक मुख्य परीक्षण किया है। तो पैकेज ए से मुख्य परीक्षण पैकेज ए में सभी मॉड्यूल इकट्ठा करेगा पैकेज ए के उप-पैकेजों से ए + मुख्य परीक्षण और इसी तरह। मैं मान रहा था कि आप unittest का उपयोग कर रहे हैं क्योंकि आपने कोई अतिरिक्त विवरण नहीं दिया है, लेकिन मुझे लगता है कि यह संरचना अन्य पायथन परीक्षण ढांचे पर भी लागू की जा सकती है।


संपादित करें: ठीक है मैं काफी यकीन है कि मैं पूरी तरह से आपकी समस्या समझ में नहीं हूँ, लेकिन से मैं क्या समझ सकता हूँ तुम दोनों सूट suiteFilter.py में परिभाषित किया गया और testcase में Invoice.py में परिभाषित जोड़ना चाहते हैं एक ही सूट? यदि ऐसा है तो क्यों सिर्फ उदाहरण के लिए एक mainTest.py में ऐसा नहीं:

import unittest 
import suiteFilter 
import Invoice 


def suite() 
    test_suite = unittest.TestSuite() 
    test_suite.addTest(suiteFilter.suite()) 
    test_suite.addTest(unittest.makeSuite(Invoice)) 


if __name__ == "__main__": 
    result = unittest.TextTestRunner(verbosity=2).run(suite()) 
    sys.exit(not result.wasSuccessful()) 

आप परीक्षण और स्वीट में एक test_suite करने के लिए सभी एक ही जोड़ सकते हैं।

+0

धन्यवाद, मैंने और अतिरिक्त जानकारी दी है –

+0

मेरे एंड्रॉइड को संपादित किया गया। – Bogdan

+0

बहुत बहुत धन्यवाद! आपने मेरी समस्या हल कर ली है! हो सकता है कि आप मेरी दूसरी चीज़ के साथ मदद कर सकें: अगर मैं सूटकेस या टेस्टकेस में से एक विफल रहता हूं तो मैं बड़ा सूटकेस खत्म करना चाहता हूं। फिलहाल, यदि उनमें से एक विफल हो जाता है, तो बड़ा सूटकेस अगले सूटकेस/टेस्टकेस के साथ जारी रहता है। –

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

  • कोई संबंधित समस्या नहीं^_^