aboutsummaryrefslogtreecommitdiffstats
path: root/functest/core/unit.py
diff options
context:
space:
mode:
authorCédric Ollivier <cedric.ollivier@orange.com>2017-05-23 16:37:04 +0200
committerCédric Ollivier <cedric.ollivier@orange.com>2017-05-23 16:39:07 +0200
commitdbedb36db63b406c5264be20e100062fc59c5a19 (patch)
tree61396a5388635aef18f5aec26f6e23f68de24e10 /functest/core/unit.py
parenta32ee348efa6d5858cef97294a94d85bce63d456 (diff)
Rename pytest_suite_runner.py to unit.py
It also adds the rst files to include this module in apidoc. Change-Id: Iabbb17bc8601265bd9436c75d1afc0b470df1eb4 Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
Diffstat (limited to 'functest/core/unit.py')
-rw-r--r--functest/core/unit.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/functest/core/unit.py b/functest/core/unit.py
new file mode 100644
index 00000000..efcef7b6
--- /dev/null
+++ b/functest/core/unit.py
@@ -0,0 +1,61 @@
+# Copyright (c) 2015 All rights reserved
+# This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# pylint: disable=missing-docstring
+
+from __future__ import division
+
+import logging
+import time
+import unittest
+
+import six
+
+from functest.core import testcase
+
+
+class PyTestSuiteRunner(testcase.TestCase):
+ """
+ This superclass is designed to execute pre-configured unittest.TestSuite()
+ objects
+ """
+
+ def __init__(self, **kwargs):
+ super(PyTestSuiteRunner, self).__init__(**kwargs)
+ self.suite = None
+ self.logger = logging.getLogger(__name__)
+
+ def run(self, **kwargs):
+ """
+ Starts test execution from the functest framework
+ """
+ try:
+ name = kwargs["name"]
+ try:
+ self.suite = unittest.TestLoader().loadTestsFromName(name)
+ except ImportError:
+ self.logger.error("Can not import %s", name)
+ return testcase.TestCase.EX_RUN_ERROR
+ except KeyError:
+ pass
+ self.start_time = time.time()
+ stream = six.StringIO()
+ result = unittest.TextTestRunner(
+ stream=stream, verbosity=2).run(self.suite)
+ self.logger.debug("\n\n%s", stream.getvalue())
+ self.stop_time = time.time()
+ self.details = {"failures": result.failures,
+ "errors": result.errors}
+ try:
+ self.result = 100 * (
+ (result.testsRun - (len(result.failures) +
+ len(result.errors))) /
+ result.testsRun)
+ return testcase.TestCase.EX_OK
+ except ZeroDivisionError:
+ self.logger.error("No test has been run")
+ return testcase.TestCase.EX_RUN_ERROR