aboutsummaryrefslogtreecommitdiffstats
path: root/functest
diff options
context:
space:
mode:
Diffstat (limited to 'functest')
-rw-r--r--functest/core/feature.py2
-rw-r--r--functest/core/unit.py (renamed from functest/core/pytest_suite_runner.py)47
-rw-r--r--functest/opnfv_tests/openstack/snaps/snaps_test_runner.py4
-rw-r--r--functest/tests/unit/core/test_unit.py (renamed from functest/tests/unit/core/test_pytest_suite_runner.py)10
-rw-r--r--functest/tests/unit/utils/test_functest_utils.py10
5 files changed, 46 insertions, 27 deletions
diff --git a/functest/core/feature.py b/functest/core/feature.py
index 140c9bb2..d53eb7d0 100644
--- a/functest/core/feature.py
+++ b/functest/core/feature.py
@@ -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.
diff --git a/functest/core/pytest_suite_runner.py b/functest/core/unit.py
index efcef7b6..6799420c 100644
--- a/functest/core/pytest_suite_runner.py
+++ b/functest/core/unit.py
@@ -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"]
diff --git a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
index 94b97551..2b98a202 100644
--- a/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
+++ b/functest/opnfv_tests/openstack/snaps/snaps_test_runner.py
@@ -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
"""
diff --git a/functest/tests/unit/core/test_pytest_suite_runner.py b/functest/tests/unit/core/test_unit.py
index f317cdea..f86ea8d3 100644
--- a/functest/tests/unit/core/test_pytest_suite_runner.py
+++ b/functest/tests/unit/core/test_unit.py
@@ -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)
diff --git a/functest/tests/unit/utils/test_functest_utils.py b/functest/tests/unit/utils/test_functest_utils.py
index 218f7f72..12604c1a 100644
--- a/functest/tests/unit/utils/test_functest_utils.py
+++ b/functest/tests/unit/utils/test_functest_utils.py
@@ -452,9 +452,8 @@ class FunctestUtilsTesting(unittest.TestCase):
mock_logger_info.assert_called_once_with(msg_exec)
mopen.assert_called_once_with(self.output_file, "w")
- @mock.patch('functest.utils.functest_utils.logger.info')
- def test_execute_command_args_missing_with_success(self, mock_logger_info,
- ):
+ @mock.patch('sys.stdout')
+ def test_execute_command_args_missing_with_success(self, stdout=None):
with mock.patch('functest.utils.functest_utils.subprocess.Popen') \
as mock_subproc_open:
@@ -476,9 +475,8 @@ class FunctestUtilsTesting(unittest.TestCase):
output_file=None)
self.assertEqual(resp, 0)
- @mock.patch('functest.utils.functest_utils.logger.error')
- def test_execute_command_args_missing_with_error(self, mock_logger_error,
- ):
+ @mock.patch('sys.stdout')
+ def test_execute_command_args_missing_with_error(self, stdout=None):
with mock.patch('functest.utils.functest_utils.subprocess.Popen') \
as mock_subproc_open: