diff options
author | Cédric Ollivier <cedric.ollivier@orange.com> | 2017-04-02 10:29:51 +0200 |
---|---|---|
committer | Cédric Ollivier <cedric.ollivier@orange.com> | 2017-04-04 15:16:52 +0200 |
commit | db9767d6871b3601265b46645d2ff7656f3a0bb4 (patch) | |
tree | 5bb11c71443f8b63e2c7968a8306299c9b291f68 | |
parent | 582ebd448508625ed2c9f362aaafc3fc46e60df0 (diff) |
Add unit tests for feature
They partially cover feature but already highlight bugs.
Several tests are skipped to allow merging. Their decorators could be
removed as soon as feature is fixed.
I think bad-continuation is false positive so it's disabled (pep8 and
flake8 return ok).
JIRA: FUNCTEST-779
Change-Id: I89b9e2ec0388eea2471d941b2c653deca7fbddf6
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
-rw-r--r-- | functest/tests/unit/core/test_feature.py | 108 | ||||
-rwxr-xr-x | run_unit_tests.sh | 2 |
2 files changed, 109 insertions, 1 deletions
diff --git a/functest/tests/unit/core/test_feature.py b/functest/tests/unit/core/test_feature.py new file mode 100644 index 000000000..0ed178a1d --- /dev/null +++ b/functest/tests/unit/core/test_feature.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python + +# Copyright (c) 2017 Orange 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 + +import logging +import unittest + +import mock + +from functest.core import feature +from functest.core import testcase +from functest.utils import constants + + +class FeatureInitTesting(unittest.TestCase): + + logging.disable(logging.CRITICAL) + + @unittest.skip("JIRA: FUNCTEST-780") + def test_init_with_wrong_repo(self): + with self.assertRaises(ValueError): + feature.Feature(repo='foo') + + def test_init(self): + barometer = feature.Feature(repo='dir_repo_barometer') + self.assertEqual(barometer.project_name, "functest") + self.assertEqual(barometer.case_name, "") + self.assertEqual( + barometer.repo, + constants.CONST.__getattribute__('dir_repo_barometer')) + + +class FeatureTesting(unittest.TestCase): + + logging.disable(logging.CRITICAL) + + def setUp(self): + self.feature = feature.Feature(repo='dir_repo_barometer') + + @unittest.skip("JIRA: FUNCTEST-781") + def test_prepare_ko(self): + # pylint: disable=bad-continuation + with mock.patch.object( + self.feature, 'prepare', + return_value=testcase.TestCase.EX_RUN_ERROR) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_RUN_ERROR) + mock_object.assert_called_once_with() + + @unittest.skip("JIRA: FUNCTEST-781") + def test_prepare_exc(self): + with mock.patch.object(self.feature, 'prepare', + side_effect=Exception) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_RUN_ERROR) + mock_object.assert_called_once_with() + + @unittest.skip("JIRA: FUNCTEST-781") + def test_post_ko(self): + # pylint: disable=bad-continuation + with mock.patch.object( + self.feature, 'post', + return_value=testcase.TestCase.EX_RUN_ERROR) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_RUN_ERROR) + mock_object.assert_called_once_with() + + @unittest.skip("JIRA: FUNCTEST-781") + def test_post_exc(self): + with mock.patch.object(self.feature, 'post', + side_effect=Exception) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_RUN_ERROR) + mock_object.assert_called_once_with() + + @unittest.skip("JIRA: FUNCTEST-778") + def test_execute_ko(self): + with mock.patch.object(self.feature, 'execute', + return_value=1) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_RUN_ERROR) + mock_object.assert_called_once_with() + + @unittest.skip("JIRA: FUNCTEST-778") + def test_execute_exc(self): + with mock.patch.object(self.feature, 'execute', + side_effect=Exception) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_RUN_ERROR) + mock_object.assert_called_once_with() + + def test_run(self): + with mock.patch.object(self.feature, 'execute', + return_value=0) as mock_object: + self.assertEqual(self.feature.run(), + testcase.TestCase.EX_OK) + mock_object.assert_called_once_with() + + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/run_unit_tests.sh b/run_unit_tests.sh index 0ed1f7b3b..917c8eee8 100755 --- a/run_unit_tests.sh +++ b/run_unit_tests.sh @@ -40,7 +40,7 @@ nosetests --with-xunit \ --cover-tests \ --cover-package=functest.ci \ --cover-package=functest.cli \ - --cover-package=functest.core.testcase \ + --cover-package=functest.core \ --cover-package=functest.opnfv_tests.sdn.odl.odl \ --cover-package=functest.opnfv_tests.vnf.ims \ --cover-package=functest.utils \ |