From: zjh <[email protected]> Baserunner contains three features: 1. load cases from a manifest file 2. load cases from a package such as "oeqa.runtime" 3. create runner engine based on pyunit textrunner
Signed-off-by: zjh <[email protected]> --- meta/lib/base/baserunner.py | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/meta/lib/base/baserunner.py b/meta/lib/base/baserunner.py index 56b838e..d59872f 100755 --- a/meta/lib/base/baserunner.py +++ b/meta/lib/base/baserunner.py @@ -31,30 +31,62 @@ class FakeOptions(object): class TestRunnerBase(object): '''test runner base ''' def __init__(self, context=None): - self.tclist = [] + self.testslist = [] self.runner = None self.context = context if context else TestContext() + self.test_options = None self.test_result = None self.run_time = None + def __del__(self): + """ + Because unittest.TestCase is a class object, it will exist as long as the python virtual machine process. + So tc can't be released if we don't release them explicitly. + """ + if hasattr(unittest.TestCase, "tc"): + delattr(unittest.TestCase, "tc") + + @staticmethod + def get_tc_from_manifest(fname): + '''get tc list from manifest format ''' + with open(fname, "r") as f: + tclist = [n.strip() for n in f.readlines() \ + if n.strip() and not n.strip().startswith('#')] + return tclist def configure(self, options=FakeOptions()): '''configure before testing''' - pass + self.test_options = options + self.runner = unittest.TextTestRunner(stream=sys.stderr, \ + verbosity=2) def result(self): '''output test result ''' - pass + return self.test_result def loadtest(self, names=None): '''load test suite''' - pass + if names is None: + names = self.testslist + testloader = unittest.TestLoader() + tclist = [] + for name in names: + tset = testloader.loadTestsFromName(name) + if tset.countTestCases() > 0: + tclist.append(tset) + elif tset._tests == []: + tclist.append(testloader.discover(name, "[!_]*.py", os.path.curdir)) + return testloader.suiteClass(tclist) def runtest(self, testsuite): '''run test suite''' - pass + starttime = time.time() + self.test_result = self.runner.run(testsuite) + self.run_time = time.time() - starttime def start(self, testsuite): '''start testing''' - pass + setattr(unittest.TestCase, "tc", self.context) + self.runtest(testsuite) + self.result() -- 2.1.4 -- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
