Merge "Stop printing in console when testing functest_utils.py"
authorJose Lausuch <jose.lausuch@ericsson.com>
Wed, 24 May 2017 17:35:19 +0000 (17:35 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Wed, 24 May 2017 17:35:19 +0000 (17:35 +0000)
docs/api/apidoc/functest.core.rst
docs/api/apidoc/functest.core.unit.rst [new file with mode: 0644]
docs/com/pres/framework/framework.md
functest/core/feature.py
functest/core/unit.py [moved from functest/core/pytest_suite_runner.py with 56% similarity]
functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
functest/tests/unit/core/test_unit.py [moved from functest/tests/unit/core/test_pytest_suite_runner.py with 90% similarity]

index 27b2ed1..55c795b 100644 (file)
@@ -14,4 +14,5 @@ Submodules
    functest.core.feature
    functest.core.testcase
    functest.core.vnf
+   functest.core.unit
 
diff --git a/docs/api/apidoc/functest.core.unit.rst b/docs/api/apidoc/functest.core.unit.rst
new file mode 100644 (file)
index 0000000..5dd6880
--- /dev/null
@@ -0,0 +1,7 @@
+functest.core.unit module
+=========================
+
+.. automodule:: functest.core.unit
+    :members:
+    :undoc-members:
+    :show-inheritance:
index 3c1aae1..1b07a8e 100644 (file)
@@ -252,6 +252,62 @@ run:
 
 
 
+## class Suite
+bases: TestCase
+
+base model for running unittest.TestSuite
+
+
+### run(**kwargs)
+
+- allows running any unittest.TestSuite
+- sets the following attributes required to push the results to DB:
+    - result
+    - start_time
+    - stop_time
+    - details
+
+
+
+## Your fourth test case
+
+
+### fourth.py
+
+```python
+#!/usr/bin/env python
+
+import unittest
+
+class TestStringMethods(unittest.TestCase):
+
+    def test_upper(self):
+        self.assertEqual('Hello World'.upper(),
+                         'HELLO WORLD')
+```
+
+
+### functest/ci/testcases.yaml
+
+```
+case_name: fourth
+project_name: functest
+criteria: 100
+blocking: true
+clean_flag: false
+description: ''
+dependencies:
+    installer: ''
+    scenario: ''
+run:
+    module: 'functest.core.unit'
+    class: 'Suite'
+    args:
+        name: 'fourth'
+```
+
+
+
 ## Euphrates
 
 
index 140c9bb..d53eb7d 100644 (file)
@@ -7,7 +7,7 @@
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 
-"""Define the parent class of all Functest Features.
+"""Define the parent classes of all Functest Features.
 
 Feature is considered as TestCase offered by Third-party. It offers
 helpers to run any python method or any bash command.
similarity index 56%
rename from functest/core/pytest_suite_runner.py
rename to functest/core/unit.py
index efcef7b..6799420 100644 (file)
@@ -1,11 +1,13 @@
-# Copyright (c) 2015 All rights reserved
-# This program and the accompanying materials
+#!/usr/bin/env python
+
+# Copyright (c) 2016 Cable Television Laboratories, Inc. and others.
+#
+# 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
+"""Define the parent class to run unittest.TestSuite as TestCase."""
 
 from __future__ import division
 
@@ -17,21 +19,42 @@ import six
 
 from functest.core import testcase
 
+__author__ = ("Steven Pisarski <s.pisarski@cablelabs.com>, "
+              "Cedric Ollivier <cedric.ollivier@orange.com>")
 
-class PyTestSuiteRunner(testcase.TestCase):
-    """
-    This superclass is designed to execute pre-configured unittest.TestSuite()
-    objects
-    """
+
+class Suite(testcase.TestCase):
+    """Base model for running unittest.TestSuite."""
 
     def __init__(self, **kwargs):
-        super(PyTestSuiteRunner, self).__init__(**kwargs)
+        super(Suite, self).__init__(**kwargs)
         self.suite = None
         self.logger = logging.getLogger(__name__)
 
     def run(self, **kwargs):
-        """
-        Starts test execution from the functest framework
+        """Run the test suite.
+
+        It allows running any unittest.TestSuite and getting its
+        execution status.
+
+        By default, it runs the suite defined as instance attribute.
+        It can be overriden by passing name as arg. It must
+        conform with TestLoader.loadTestsFromName().
+
+        It sets the following attributes required to push the results
+        to DB:
+
+            * result,
+            * start_time,
+            * stop_time,
+            * details.
+
+        Args:
+            kwargs: Arbitrary keyword arguments.
+
+        Returns:
+            TestCase.EX_OK if any TestSuite has been run,
+            TestCase.EX_RUN_ERROR otherwise.
         """
         try:
             name = kwargs["name"]
index 94b9755..2b98a20 100644 (file)
@@ -7,7 +7,7 @@
 
 import logging
 
-from functest.core.pytest_suite_runner import PyTestSuiteRunner
+from functest.core import unit
 from functest.opnfv_tests.openstack.snaps import snaps_utils
 from functest.utils import functest_utils
 from functest.utils.constants import CONST
@@ -16,7 +16,7 @@ from snaps.openstack import create_flavor
 from snaps.openstack.tests import openstack_tests
 
 
-class SnapsTestRunner(PyTestSuiteRunner):
+class SnapsTestRunner(unit.Suite):
     """
     This test executes the SNAPS Python Tests
     """
similarity index 90%
rename from functest/tests/unit/core/test_pytest_suite_runner.py
rename to functest/tests/unit/core/test_unit.py
index f317cde..f86ea8d 100644 (file)
@@ -12,20 +12,19 @@ import unittest
 
 import mock
 
-from functest.core import pytest_suite_runner
+from functest.core import unit
 from functest.core import testcase
 
 
 class PyTestSuiteRunnerTesting(unittest.TestCase):
 
     def setUp(self):
-        self.psrunner = pytest_suite_runner.PyTestSuiteRunner()
+        self.psrunner = unit.Suite()
 
     @mock.patch('unittest.TestLoader')
     def _test_run(self, mock_class=None, result=mock.Mock(),
                   status=testcase.TestCase.EX_OK):
-        with mock.patch('functest.core.pytest_suite_runner.'
-                        'unittest.TextTestRunner.run',
+        with mock.patch('functest.core.unit.unittest.TextTestRunner.run',
                         return_value=result):
             self.assertEqual(self.psrunner.run(), status)
             mock_class.assert_not_called()
@@ -78,8 +77,7 @@ class PyTestSuiteRunnerTesting(unittest.TestCase):
                                 failures=[])
         mock_obj = mock.Mock()
         mock_class.side_effect = mock_obj
-        with mock.patch('functest.core.pytest_suite_runner.'
-                        'unittest.TextTestRunner.run',
+        with mock.patch('functest.core.unit.unittest.TextTestRunner.run',
                         return_value=mock_result):
             self.assertEqual(self.psrunner.run(name='foo'),
                              testcase.TestCase.EX_OK)