| try: |
| import unittest2 as unittest |
| except ImportError: |
| import unittest |
| |
| from functools import partial |
| import os |
| import sys |
| import logging |
| def testCaseLogger(message, logger=None): |
| if logger is not None: |
| logger.debug(message) |
| class TestCaseExecuteEngine(object): |
| def __init__(self, testclient, testCaseFolder, testcaseLogFile=None, testResultLogFile=None): |
| self.testclient = testclient |
| self.testCaseFolder = testCaseFolder |
| self.logger = None |
| if testcaseLogFile is not None: |
| logger = logging.getLogger("testcase") |
| fh = logging.FileHandler(testcaseLogFile) |
| logger.addHandler(fh) |
| logger.setLevel(logging.DEBUG) |
| self.logger = logger |
| if testResultLogFile is not None: |
| fp = open(testResultLogFile, "w") |
| self.testResultLogFile = fp |
| else: |
| self.testResultLogFile = sys.stdout |
| |
| def injectTestCase(self, testSuites): |
| for test in testSuites: |
| if isinstance(test, unittest.BaseTestSuite): |
| self.injectTestCase(test) |
| else: |
| setattr(test, "testClient", self.testclient) |
| setattr(test, "debug", partial(testCaseLogger, logger=self.logger)) |
| def run(self): |
| loader = unittest.loader.TestLoader() |
| suite = loader.discover(self.testCaseFolder) |
| self.injectTestCase(suite) |
| |
| unittest.TextTestRunner(stream=self.testResultLogFile, verbosity=2).run(suite) |
| |
| |