Run unittest in a Class
- by chrissygormley
Hello,
I have a test suite to perform smoke tests. I have all my script stored in various classes but when I try and run the test suite I can't seem to get it working if it is in a class. The code is below: (a class to call the tests)
from alltests import SmokeTests 
class CallTests(SmokeTests): 
def integration(self): 
    self.suite() 
if __name__ == '__main__': 
run = CallTests() 
run.integration() 
And the test suite:
class SmokeTests(): 
def suite(self): #Function stores all the modules to be tested  
    modules_to_test = ('external_sanity', 'internal_sanity') 
    alltests = unittest.TestSuite() 
    for module in map(__import__, modules_to_test): 
        alltests.addTest(unittest.findTestCases(module)) 
    return alltests 
if __name__ == '__main__': 
unittest.main(defaultTest='suite') 
So I can see how to call a normal function defined but I'm finding it difficult calling in the suite. In one of the tests the suite is set up like so:
class InternalSanityTestSuite(unittest.TestSuite): 
# Tests to be tested by test suite 
def makeInternalSanityTestSuite(): 
    suite = unittest.TestSuite() 
    suite.addTest(TestInternalSanity("BasicInternalSanity")) 
    suite.addTest(TestInternalSanity("VerifyInternalSanityTestFail")) 
    return suite 
def suite(): 
    return unittest.makeSuite(TestInternalSanity) 
If I have def suite() inside the class SmokeTests the script executes but the tests don't run but if I remove the class the tests run. I run this as a script and call in variables into the tests. I do not want to have to run the tests by os.system('python tests.py'). I was hoping to call the tests through the class I have like any other function. This need's to be called from a class as the script that I'm calling it from is Object Oriented. If anyone can get the code to be run using Call Tests I would appreciate it alot.
Thanks for any help in advance.