diff options
Diffstat (limited to 'functest/tests/unit')
32 files changed, 327 insertions, 347 deletions
diff --git a/functest/tests/unit/ci/test_prepare_env.py b/functest/tests/unit/ci/test_prepare_env.py index fbb59651..513e7230 100644 --- a/functest/tests/unit/ci/test_prepare_env.py +++ b/functest/tests/unit/ci/test_prepare_env.py @@ -18,8 +18,6 @@ from opnfv.utils import constants as opnfv_constants class PrepareEnvTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.prepare_envparser = prepare_env.PrepareEnvParser() @@ -464,4 +462,5 @@ class PrepareEnvTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/ci/test_run_tests.py b/functest/tests/unit/ci/test_run_tests.py index d0052392..88e5d2b8 100644 --- a/functest/tests/unit/ci/test_run_tests.py +++ b/functest/tests/unit/ci/test_run_tests.py @@ -5,21 +5,32 @@ # which accompanies this distribution, and is available at # http://www.apache.org/licenses/LICENSE-2.0 - -import unittest import logging +import unittest import mock from functest.ci import run_tests from functest.utils.constants import CONST +from functest.core.testcase import TestCase -class RunTestsTesting(unittest.TestCase): +class FakeModule(TestCase): + + def run(self): + return TestCase.EX_OK + + def push_to_db(self): + return TestCase.EX_OK + + def is_successful(self): + return TestCase.EX_OK - logging.disable(logging.CRITICAL) + +class RunTestsTesting(unittest.TestCase): def setUp(self): + self.runner = run_tests.Runner() self.sep = 'test_sep' self.creds = {'OS_AUTH_URL': 'http://test_ip:test_port/v2.0', 'OS_USERNAME': 'test_os_username', @@ -38,11 +49,10 @@ class RunTestsTesting(unittest.TestCase): self.tiers.configure_mock(**attrs) self.run_tests_parser = run_tests.RunTestsParser() - self.global_variables = run_tests.GlobalVariables() @mock.patch('functest.ci.run_tests.logger.info') def test_print_separator(self, mock_logger_info): - run_tests.print_separator(self.sep) + self.runner.print_separator(self.sep) mock_logger_info.assert_called_once_with(self.sep * 44) @mock.patch('functest.ci.run_tests.logger.error') @@ -50,24 +60,24 @@ class RunTestsTesting(unittest.TestCase): with mock.patch('functest.ci.run_tests.os.path.isfile', return_value=False), \ self.assertRaises(Exception): - run_tests.source_rc_file() + self.runner.source_rc_file() @mock.patch('functest.ci.run_tests.logger.debug') - def test_source_rc_file_default(self, mock_logger_debug): - with mock.patch('functest.ci.run_tests.os.path.isfile', - return_value=True), \ - mock.patch('functest.ci.run_tests.os_utils.source_credentials', - return_value=self.creds): - run_tests.source_rc_file() + @mock.patch('functest.ci.run_tests.os.path.isfile', + return_value=True) + def test_source_rc_file_default(self, *args): + with mock.patch('functest.ci.run_tests.os_utils.source_credentials', + return_value=self.creds): + self.runner.source_rc_file() @mock.patch('functest.ci.run_tests.os_snapshot.main') def test_generate_os_snapshot(self, mock_os_snap): - run_tests.generate_os_snapshot() + self.runner.generate_os_snapshot() self.assertTrue(mock_os_snap.called) @mock.patch('functest.ci.run_tests.os_clean.main') def test_cleanup(self, mock_os_clean): - run_tests.cleanup() + self.runner.cleanup() self.assertTrue(mock_os_clean.called) def test_get_run_dict_if_defined_default(self): @@ -75,7 +85,7 @@ class RunTestsTesting(unittest.TestCase): with mock.patch('functest.ci.run_tests.' 'ft_utils.get_dict_by_test', return_value={'run': mock_obj}): - self.assertEqual(run_tests.get_run_dict('test_name'), + self.assertEqual(self.runner.get_run_dict('test_name'), mock_obj) @mock.patch('functest.ci.run_tests.logger.error') @@ -85,7 +95,7 @@ class RunTestsTesting(unittest.TestCase): 'ft_utils.get_dict_by_test', return_value=None): testname = 'test_name' - self.assertEqual(run_tests.get_run_dict(testname), + self.assertEqual(self.runner.get_run_dict(testname), None) mock_logger_error.assert_called_once_with("Cannot get {}'s config " "options" @@ -95,7 +105,7 @@ class RunTestsTesting(unittest.TestCase): 'ft_utils.get_dict_by_test', return_value={}): testname = 'test_name' - self.assertEqual(run_tests.get_run_dict(testname), + self.assertEqual(self.runner.get_run_dict(testname), None) @mock.patch('functest.ci.run_tests.logger.exception') @@ -105,7 +115,7 @@ class RunTestsTesting(unittest.TestCase): 'ft_utils.get_dict_by_test', side_effect=Exception): testname = 'test_name' - self.assertEqual(run_tests.get_run_dict(testname), + self.assertEqual(self.runner.get_run_dict(testname), None) mock_logger_except.assert_called_once_with("Cannot get {}'s config" " options" @@ -116,63 +126,67 @@ class RunTestsTesting(unittest.TestCase): args = {'get_name.return_value': 'test_name', 'needs_clean.return_value': False} mock_test.configure_mock(**args) - with mock.patch('functest.ci.run_tests.print_separator'),\ - mock.patch('functest.ci.run_tests.source_rc_file'), \ - mock.patch('functest.ci.run_tests.get_run_dict', + with mock.patch('functest.ci.run_tests.Runner.print_separator'),\ + mock.patch('functest.ci.run_tests.Runner.source_rc_file'), \ + mock.patch('functest.ci.run_tests.Runner.get_run_dict', return_value=None), \ self.assertRaises(Exception) as context: - run_tests.run_test(mock_test, 'tier_name') + self.runner(mock_test, 'tier_name') msg = "Cannot import the class for the test case." self.assertTrue(msg in context) - def test_run_tests_default(self): + @mock.patch('functest.ci.run_tests.Runner.print_separator') + @mock.patch('functest.ci.run_tests.Runner.source_rc_file') + @mock.patch('functest.ci.run_tests.Runner.generate_os_snapshot') + @mock.patch('functest.ci.run_tests.Runner.cleanup') + @mock.patch('importlib.import_module', name="module", + return_value=mock.Mock(test_class=mock.Mock( + side_effect=FakeModule))) + @mock.patch('functest.utils.functest_utils.get_dict_by_test') + def test_run_tests_default(self, *args): mock_test = mock.Mock() - args = {'get_name.return_value': 'test_name', - 'needs_clean.return_value': True} - mock_test.configure_mock(**args) + kwargs = {'get_name.return_value': 'test_name', + 'needs_clean.return_value': True} + mock_test.configure_mock(**kwargs) test_run_dict = {'module': 'test_module', - 'class': mock.Mock, - 'args': 'test_args'} - with mock.patch('functest.ci.run_tests.print_separator'),\ - mock.patch('functest.ci.run_tests.source_rc_file'), \ - mock.patch('functest.ci.run_tests.generate_os_snapshot'), \ - mock.patch('functest.ci.run_tests.cleanup'), \ - mock.patch('functest.ci.run_tests.get_run_dict', - return_value=test_run_dict), \ - self.assertRaises(run_tests.BlockingTestFailed) as context: - run_tests.GlobalVariables.CLEAN_FLAG = True - run_tests.run_test(mock_test, 'tier_name') - msg = 'The test case test_name failed and is blocking' - self.assertTrue(msg in context) + 'class': 'test_class'} + with mock.patch('functest.ci.run_tests.Runner.get_run_dict', + return_value=test_run_dict): + self.runner.clean_flag = True + self.runner.run_test(mock_test, 'tier_name') + self.assertEqual(self.runner.overall_result, + run_tests.Result.EX_OK) @mock.patch('functest.ci.run_tests.logger.info') def test_run_tier_default(self, mock_logger_info): - with mock.patch('functest.ci.run_tests.print_separator'), \ - mock.patch('functest.ci.run_tests.run_test') as mock_method: - run_tests.run_tier(self.tier) + with mock.patch('functest.ci.run_tests.Runner.print_separator'), \ + mock.patch( + 'functest.ci.run_tests.Runner.run_test') as mock_method: + self.runner.run_tier(self.tier) mock_method.assert_any_call('test1', 'test_tier') mock_method.assert_any_call('test2', 'test_tier') self.assertTrue(mock_logger_info.called) @mock.patch('functest.ci.run_tests.logger.info') def test_run_tier_missing_test(self, mock_logger_info): - with mock.patch('functest.ci.run_tests.print_separator'): + with mock.patch('functest.ci.run_tests.Runner.print_separator'): self.tier.get_tests.return_value = None - self.assertEqual(run_tests.run_tier(self.tier), 0) + self.assertEqual(self.runner.run_tier(self.tier), 0) self.assertTrue(mock_logger_info.called) @mock.patch('functest.ci.run_tests.logger.info') def test_run_all_default(self, mock_logger_info): - with mock.patch('functest.ci.run_tests.run_tier') as mock_method: + with mock.patch( + 'functest.ci.run_tests.Runner.run_tier') as mock_method: CONST.__setattr__('CI_LOOP', 'test_ci_loop') - run_tests.run_all(self.tiers) + self.runner.run_all(self.tiers) mock_method.assert_any_call(self.tier) self.assertTrue(mock_logger_info.called) @mock.patch('functest.ci.run_tests.logger.info') def test_run_all_missing_tier(self, mock_logger_info): CONST.__setattr__('CI_LOOP', 'loop_re_not_available') - run_tests.run_all(self.tiers) + self.runner.run_all(self.tiers) self.assertTrue(mock_logger_info.called) def test_main_failed(self): @@ -181,72 +195,82 @@ class RunTestsTesting(unittest.TestCase): args = {'get_tier.return_value': False, 'get_test.return_value': False} mock_obj.configure_mock(**args) - with mock.patch('functest.ci.run_tests.tb.TierBuilder'), \ - mock.patch('functest.ci.run_tests.source_rc_file', + mock.patch('functest.ci.run_tests.Runner.source_rc_file', side_effect=Exception): - self.assertEqual(run_tests.main(**kwargs), + self.assertEqual(self.runner.main(**kwargs), run_tests.Result.EX_ERROR) - with mock.patch('functest.ci.run_tests.tb.TierBuilder', return_value=mock_obj), \ - mock.patch('functest.ci.run_tests.source_rc_file', + mock.patch('functest.ci.run_tests.Runner.source_rc_file', side_effect=Exception): - self.assertEqual(run_tests.main(**kwargs), + self.assertEqual(self.runner.main(**kwargs), run_tests.Result.EX_ERROR) - def test_main_default(self): - kwargs = {'test': 'test_name', 'noclean': True, 'report': True} + def test_main_tier(self, *args): + mock_tier = mock.Mock() + args = {'get_name.return_value': 'tier_name'} + mock_tier.configure_mock(**args) + kwargs = {'test': 'tier_name', 'noclean': True, 'report': True} mock_obj = mock.Mock() - args = {'get_tier.return_value': True, - 'get_test.return_value': False} + args = {'get_tier.return_value': mock_tier, + 'get_test.return_value': None} mock_obj.configure_mock(**args) with mock.patch('functest.ci.run_tests.tb.TierBuilder', return_value=mock_obj), \ - mock.patch('functest.ci.run_tests.source_rc_file'), \ - mock.patch('functest.ci.run_tests.run_tier') as m: - self.assertEqual(run_tests.main(**kwargs), + mock.patch('functest.ci.run_tests.Runner.source_rc_file'), \ + mock.patch('functest.ci.run_tests.Runner.run_tier') as m: + self.assertEqual(self.runner.main(**kwargs), run_tests.Result.EX_OK) self.assertTrue(m.called) + def test_main_test(self, *args): + kwargs = {'test': 'test_name', 'noclean': True, 'report': True} + mock_test = mock.Mock() + args = {'get_name.return_value': 'test_name', + 'needs_clean.return_value': True} + mock_test.configure_mock(**args) mock_obj = mock.Mock() - args = {'get_tier.return_value': False, - 'get_test.return_value': True} + args = {'get_tier.return_value': None, + 'get_test.return_value': mock_test} mock_obj.configure_mock(**args) with mock.patch('functest.ci.run_tests.tb.TierBuilder', return_value=mock_obj), \ - mock.patch('functest.ci.run_tests.source_rc_file'), \ - mock.patch('functest.ci.run_tests.run_test') as m: - self.assertEqual(run_tests.main(**kwargs), + mock.patch('functest.ci.run_tests.Runner.source_rc_file'), \ + mock.patch('functest.ci.run_tests.Runner.run_test') as m: + self.assertEqual(self.runner.main(**kwargs), run_tests.Result.EX_OK) self.assertTrue(m.called) + def test_main_all_tier(self, *args): kwargs = {'test': 'all', 'noclean': True, 'report': True} mock_obj = mock.Mock() - args = {'get_tier.return_value': False, - 'get_test.return_value': False} + args = {'get_tier.return_value': None, + 'get_test.return_value': None} mock_obj.configure_mock(**args) with mock.patch('functest.ci.run_tests.tb.TierBuilder', return_value=mock_obj), \ - mock.patch('functest.ci.run_tests.source_rc_file'), \ - mock.patch('functest.ci.run_tests.run_all') as m: - self.assertEqual(run_tests.main(**kwargs), + mock.patch('functest.ci.run_tests.Runner.source_rc_file'), \ + mock.patch('functest.ci.run_tests.Runner.run_all') as m: + self.assertEqual(self.runner.main(**kwargs), run_tests.Result.EX_OK) self.assertTrue(m.called) + def test_main_any_tier_test_ko(self, *args): kwargs = {'test': 'any', 'noclean': True, 'report': True} mock_obj = mock.Mock() - args = {'get_tier.return_value': False, - 'get_test.return_value': False} + args = {'get_tier.return_value': None, + 'get_test.return_value': None} mock_obj.configure_mock(**args) with mock.patch('functest.ci.run_tests.tb.TierBuilder', return_value=mock_obj), \ - mock.patch('functest.ci.run_tests.source_rc_file'), \ + mock.patch('functest.ci.run_tests.Runner.source_rc_file'), \ mock.patch('functest.ci.run_tests.logger.debug') as m: - self.assertEqual(run_tests.main(**kwargs), + self.assertEqual(self.runner.main(**kwargs), run_tests.Result.EX_ERROR) self.assertTrue(m.called) if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/ci/test_tier_builder.py b/functest/tests/unit/ci/test_tier_builder.py index feaf33a8..989c0870 100644 --- a/functest/tests/unit/ci/test_tier_builder.py +++ b/functest/tests/unit/ci/test_tier_builder.py @@ -15,8 +15,6 @@ from functest.ci import tier_builder class TierBuilderTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.dependency = {'installer': 'test_installer', 'scenario': 'test_scenario'} @@ -88,4 +86,5 @@ class TierBuilderTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/ci/test_tier_handler.py b/functest/tests/unit/ci/test_tier_handler.py index 28006274..c93fffd3 100644 --- a/functest/tests/unit/ci/test_tier_handler.py +++ b/functest/tests/unit/ci/test_tier_handler.py @@ -15,8 +15,6 @@ from functest.ci import tier_handler class TierHandlerTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.test = mock.Mock() attrs = {'get_name.return_value': 'test_name'} @@ -139,4 +137,5 @@ class TierHandlerTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/cli/commands/test_cli_env.py b/functest/tests/unit/cli/commands/test_cli_env.py index 4b6ea57a..14e926eb 100644 --- a/functest/tests/unit/cli/commands/test_cli_env.py +++ b/functest/tests/unit/cli/commands/test_cli_env.py @@ -18,8 +18,6 @@ from functest.tests.unit import test_utils class CliEnvTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.cli_environ = cli_env.CliEnv() @@ -28,7 +26,7 @@ class CliEnvTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command') def test_prepare_default(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/prepare_env.py start" % - CONST.dir_repo_functest) + CONST.__getattribute__('dir_repo_functest')) self.cli_environ.prepare() mock_ft_utils.assert_called_with(cmd) @@ -40,29 +38,30 @@ class CliEnvTesting(unittest.TestCase): mock.patch('functest.cli.commands.cli_testcase.os.remove') \ as mock_os_remove: cmd = ("python %s/functest/ci/prepare_env.py start" % - CONST.dir_repo_functest) + CONST.__getattribute__('dir_repo_functest')) self.cli_environ.prepare() - mock_os_remove.assert_called_once_with(CONST.env_active) + mock_os_remove.assert_called_once_with( + CONST.__getattribute__('env_active')) mock_ft_utils.assert_called_with(cmd) def _test_show_missing_env_var(self, var, *args): if var == 'INSTALLER_TYPE': - CONST.INSTALLER_TYPE = None + CONST.__setattr__('INSTALLER_TYPE', None) reg_string = "| INSTALLER: Unknown, \S+\s*|" elif var == 'INSTALLER_IP': - CONST.INSTALLER_IP = None + CONST.__setattr__('INSTALLER_IP', None) reg_string = "| INSTALLER: \S+, Unknown\s*|" elif var == 'SCENARIO': - CONST.DEPLOY_SCENARIO = None + CONST.__setattr__('DEPLOY_SCENARIO', None) reg_string = "| SCENARIO: Unknown\s*|" elif var == 'NODE': - CONST.NODE_NAME = None + CONST.__setattr__('NODE_NAME', None) reg_string = "| POD: Unknown\s*|" elif var == 'BUILD_TAG': - CONST.BUILD_TAG = None + CONST.__setattr__('BUILD_TAG', None) reg_string = "| BUILD TAG: None|" elif var == 'DEBUG': - CONST.CI_DEBUG = None + CONST.__setattr__('CI_DEBUG', None) reg_string = "| DEBUG FLAG: false\s*|" elif var == 'STATUS': reg_string = "| STATUS: not ready\s*|" @@ -106,7 +105,7 @@ class CliEnvTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_env.os.path.exists', return_value=False) def test_show_missing_git_repo_dir(self, *args): - CONST.dir_repo_functest = None + CONST.__setattr__('dir_repo_functest', None) self.assertRaises(NoSuchPathError, lambda: self.cli_environ.show()) @mock.patch('functest.cli.commands.cli_env.click.echo') @@ -127,4 +126,5 @@ class CliEnvTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/cli/commands/test_cli_os.py b/functest/tests/unit/cli/commands/test_cli_os.py index f0e58c67..b551ee4d 100644 --- a/functest/tests/unit/cli/commands/test_cli_os.py +++ b/functest/tests/unit/cli/commands/test_cli_os.py @@ -18,7 +18,6 @@ from functest.utils.constants import CONST class CliOpenStackTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) def setUp(self): self.endpoint_ip = 'test_ip' @@ -69,11 +68,10 @@ class CliOpenStackTesting(unittest.TestCase): def test_fetch_credentials_default(self, mock_click_echo, mock_os_path, mock_ftutils_execute): - CONST.INSTALLER_TYPE = self.installer_type - CONST.INSTALLER_IP = self.installer_ip - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.dir_repos, - self.openstack_creds, + CONST.__setattr__('INSTALLER_TYPE', self.installer_type) + CONST.__setattr__('INSTALLER_IP', self.installer_ip) + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, self.installer_type, self.installer_ip)) self.cli_os.openstack_creds = self.openstack_creds @@ -92,15 +90,12 @@ class CliOpenStackTesting(unittest.TestCase): def test_fetch_credentials_missing_installer_type(self, mock_click_echo, mock_os_path, mock_ftutils_execute): - installer_type = None - installer_ip = self.installer_ip - CONST.INSTALLER_TYPE = installer_type - CONST.INSTALLER_IP = installer_ip - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.dir_repos, - self.openstack_creds, - installer_type, - installer_ip)) + CONST.__setattr__('INSTALLER_TYPE', None) + CONST.__setattr__('INSTALLER_IP', self.installer_ip) + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, + None, + self.installer_ip)) self.cli_os.openstack_creds = self.openstack_creds self.cli_os.fetch_credentials() mock_click_echo.assert_any_call("The environment variable " @@ -109,8 +104,8 @@ class CliOpenStackTesting(unittest.TestCase): mock_click_echo.assert_any_call("Fetching credentials from " "installer node '%s' with " "IP=%s.." % - (installer_type, - installer_ip)) + (None, + self.installer_ip)) mock_ftutils_execute.assert_called_once_with(cmd, verbose=False) @mock.patch('functest.cli.commands.cli_os.ft_utils.execute_command') @@ -122,11 +117,10 @@ class CliOpenStackTesting(unittest.TestCase): mock_ftutils_execute): installer_type = self.installer_type installer_ip = None - CONST.INSTALLER_TYPE = installer_type - CONST.INSTALLER_IP = installer_ip - cmd = ("%s/releng/utils/fetch_os_creds.sh -d %s -i %s -a %s" - % (CONST.dir_repos, - self.openstack_creds, + CONST.__setattr__('INSTALLER_TYPE', installer_type) + CONST.__setattr__('INSTALLER_IP', installer_ip) + cmd = ("fetch_os_creds.sh -d %s -i %s -a %s" + % (self.openstack_creds, installer_type, installer_ip)) self.cli_os.openstack_creds = self.openstack_creds @@ -144,8 +138,9 @@ class CliOpenStackTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_os.ft_utils.execute_command') def test_check(self, mock_ftutils_execute): with mock.patch.object(self.cli_os, 'ping_endpoint'): - CONST.dir_repo_functest = self.dir_repo_functest - cmd = CONST.dir_repo_functest + "/functest/ci/check_os.sh" + CONST.__setattr__('dir_repo_functest', self.dir_repo_functest) + cmd = os.path.join(CONST.__getattribute__('dir_repo_functest'), + "functest/ci/check_os.sh") self.cli_os.check() mock_ftutils_execute.assert_called_once_with(cmd, verbose=False) @@ -235,4 +230,5 @@ class CliOpenStackTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/cli/commands/test_cli_testcase.py b/functest/tests/unit/cli/commands/test_cli_testcase.py index 39c8139d..fddfc317 100644 --- a/functest/tests/unit/cli/commands/test_cli_testcase.py +++ b/functest/tests/unit/cli/commands/test_cli_testcase.py @@ -17,8 +17,6 @@ from functest.utils.constants import CONST class CliTestCasesTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.testname = 'testname' with mock.patch('functest.cli.commands.cli_testcase.tb'): @@ -42,7 +40,9 @@ class CliTestCasesTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command') def test_run_default(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "-n -r ", self.testname)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "-n -r ", self.testname)) self.cli_tests.run(self.testname, noclean=True, report=True) mock_ft_utils.assert_called_with(cmd) @@ -51,7 +51,9 @@ class CliTestCasesTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command') def test_run_noclean_missing_report(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "-n ", self.testname)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "-n ", self.testname)) self.cli_tests.run(self.testname, noclean=True, report=False) mock_ft_utils.assert_called_with(cmd) @@ -60,7 +62,9 @@ class CliTestCasesTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command') def test_run_report_missing_noclean(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "-r ", self.testname)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "-r ", self.testname)) self.cli_tests.run(self.testname, noclean=False, report=True) mock_ft_utils.assert_called_with(cmd) @@ -69,7 +73,9 @@ class CliTestCasesTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_testcase.ft_utils.execute_command') def test_run_missing_noclean_report(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "", self.testname)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "", self.testname)) self.cli_tests.run(self.testname, noclean=False, report=False) mock_ft_utils.assert_called_with(cmd) @@ -100,4 +106,5 @@ class CliTestCasesTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/cli/commands/test_cli_tier.py b/functest/tests/unit/cli/commands/test_cli_tier.py index 802359f1..550eec93 100644 --- a/functest/tests/unit/cli/commands/test_cli_tier.py +++ b/functest/tests/unit/cli/commands/test_cli_tier.py @@ -17,8 +17,6 @@ from functest.utils.constants import CONST class CliTierTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.tiername = 'tiername' self.testnames = 'testnames' @@ -90,8 +88,9 @@ class CliTierTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command') def test_run_default(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "-n -r ", - self.tiername)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "-n -r ", self.tiername)) self.cli_tier.run(self.tiername, noclean=True, report=True) mock_ft_utils.assert_called_with(cmd) @@ -100,8 +99,9 @@ class CliTierTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command') def test_run_report_missing_noclean(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "-r ", - self.tiername)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "-r ", self.tiername)) self.cli_tier.run(self.tiername, noclean=False, report=True) mock_ft_utils.assert_called_with(cmd) @@ -110,8 +110,9 @@ class CliTierTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command') def test_run_noclean_missing_report(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "-n ", - self.tiername)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "-n ", self.tiername)) self.cli_tier.run(self.tiername, noclean=True, report=False) mock_ft_utils.assert_called_with(cmd) @@ -120,11 +121,13 @@ class CliTierTesting(unittest.TestCase): @mock.patch('functest.cli.commands.cli_tier.ft_utils.execute_command') def test_run_missing_noclean_report(self, mock_ft_utils, mock_os): cmd = ("python %s/functest/ci/run_tests.py " - "%s -t %s" % (CONST.dir_repo_functest, "", - self.tiername)) + "%s -t %s" % + (CONST.__getattribute__('dir_repo_functest'), + "", self.tiername)) self.cli_tier.run(self.tiername, noclean=False, report=False) mock_ft_utils.assert_called_with(cmd) if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/cli/test_cli_base.py b/functest/tests/unit/cli/test_cli_base.py index fe065c2a..89603279 100644 --- a/functest/tests/unit/cli/test_cli_base.py +++ b/functest/tests/unit/cli/test_cli_base.py @@ -22,8 +22,6 @@ with mock.patch('functest.cli.commands.cli_testcase.CliTestcase.__init__', class CliBaseTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.runner = CliRunner() self._openstack = cli_base._openstack @@ -135,4 +133,5 @@ class CliBaseTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/core/test_feature.py b/functest/tests/unit/core/test_feature.py index 8de42ec5..0160c8e1 100644 --- a/functest/tests/unit/core/test_feature.py +++ b/functest/tests/unit/core/test_feature.py @@ -17,10 +17,6 @@ import mock from functest.core import feature from functest.core import testcase -# logging must be disabled else it calls time.time() -# what will break these unit tests. -logging.disable(logging.CRITICAL) - class FeatureTestingBase(unittest.TestCase): @@ -95,4 +91,7 @@ class BashFeatureTesting(FeatureTestingBase): if __name__ == "__main__": + # logging must be disabled else it calls time.time() + # what will break these unit tests. + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/core/test_pytest_suite_runner.py b/functest/tests/unit/core/test_pytest_suite_runner.py deleted file mode 100644 index 15e5bd73..00000000 --- a/functest/tests/unit/core/test_pytest_suite_runner.py +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env python - -# 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 pytest_suite_runner -from functest.core import testcase - - -class PyTestSuiteRunnerTesting(unittest.TestCase): - - logging.disable(logging.CRITICAL) - - def setUp(self): - self.psrunner = pytest_suite_runner.PyTestSuiteRunner() - self.result = mock.Mock() - attrs = {'errors': [('test1', 'error_msg1')], - 'failures': [('test2', 'failure_msg1')]} - self.result.configure_mock(**attrs) - - self.pass_results = mock.Mock() - attrs = {'errors': None, - 'failures': None} - self.pass_results.configure_mock(**attrs) - - def test_run(self): - self.psrunner.case_name = 'test_case_name' - with mock.patch('functest.core.pytest_suite_runner.' - 'unittest.TextTestRunner.run', - return_value=self.result): - self.assertEqual(self.psrunner.run(), - testcase.TestCase.EX_OK) - - with mock.patch('functest.core.pytest_suite_runner.' - 'unittest.TextTestRunner.run', - return_value=self.pass_results): - self.assertEqual(self.psrunner.run(), - testcase.TestCase.EX_OK) - - -if __name__ == "__main__": - unittest.main(verbosity=2) diff --git a/functest/tests/unit/core/test_testcase.py b/functest/tests/unit/core/test_testcase.py index 2adf4a6d..ef0983cc 100644 --- a/functest/tests/unit/core/test_testcase.py +++ b/functest/tests/unit/core/test_testcase.py @@ -23,8 +23,6 @@ class TestCaseTesting(unittest.TestCase): """The class testing TestCase.""" # pylint: disable=missing-docstring,too-many-public-methods - logging.disable(logging.CRITICAL) - _case_name = "base" _project_name = "functest" _published_result = "PASS" @@ -225,4 +223,5 @@ class TestCaseTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/core/test_unit.py b/functest/tests/unit/core/test_unit.py new file mode 100644 index 00000000..f86ea8d3 --- /dev/null +++ b/functest/tests/unit/core/test_unit.py @@ -0,0 +1,90 @@ +#!/usr/bin/env python + +# 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 unit +from functest.core import testcase + + +class PyTestSuiteRunnerTesting(unittest.TestCase): + + def setUp(self): + 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.unit.unittest.TextTestRunner.run', + return_value=result): + self.assertEqual(self.psrunner.run(), status) + mock_class.assert_not_called() + + def test_check_suite_null(self): + self.assertEqual(self.psrunner.suite, None) + + def test_run_no_ut(self): + mock_result = mock.Mock(testsRun=0, errors=[], failures=[]) + self._test_run(result=mock_result, + status=testcase.TestCase.EX_RUN_ERROR) + self.assertEqual(self.psrunner.result, 0) + self.assertEqual(self.psrunner.details, {'errors': [], 'failures': []}) + self.assertEqual(self.psrunner.is_successful(), + testcase.TestCase.EX_TESTCASE_FAILED) + + def test_run_result_ko(self): + self.psrunner.criteria = 100 + mock_result = mock.Mock(testsRun=50, errors=[('test1', 'error_msg1')], + failures=[('test2', 'failure_msg1')]) + self._test_run(result=mock_result) + self.assertEqual(self.psrunner.result, 96) + self.assertEqual(self.psrunner.details, + {'errors': [('test1', 'error_msg1')], + 'failures': [('test2', 'failure_msg1')]}) + self.assertEqual(self.psrunner.is_successful(), + testcase.TestCase.EX_TESTCASE_FAILED) + + def test_run_result_ok(self): + mock_result = mock.Mock(testsRun=50, errors=[], + failures=[]) + self._test_run(result=mock_result) + self.assertEqual(self.psrunner.result, 100) + self.assertEqual(self.psrunner.details, {'errors': [], 'failures': []}) + self.assertEqual(self.psrunner.is_successful(), + testcase.TestCase.EX_OK) + + @mock.patch('unittest.TestLoader') + def test_run_name_exc(self, mock_class=None): + mock_obj = mock.Mock(side_effect=ImportError) + mock_class.side_effect = mock_obj + self.assertEqual(self.psrunner.run(name='foo'), + testcase.TestCase.EX_RUN_ERROR) + mock_class.assert_called_once_with() + mock_obj.assert_called_once_with() + + @mock.patch('unittest.TestLoader') + def test_run_name(self, mock_class=None): + mock_result = mock.Mock(testsRun=50, errors=[], + failures=[]) + mock_obj = mock.Mock() + mock_class.side_effect = mock_obj + with mock.patch('functest.core.unit.unittest.TextTestRunner.run', + return_value=mock_result): + self.assertEqual(self.psrunner.run(name='foo'), + testcase.TestCase.EX_OK) + mock_class.assert_called_once_with() + mock_obj.assert_called_once_with() + + +if __name__ == "__main__": + logging.disable(logging.CRITICAL) + unittest.main(verbosity=2) diff --git a/functest/tests/unit/core/test_vnf.py b/functest/tests/unit/core/test_vnf.py index 793e9576..ce859040 100644 --- a/functest/tests/unit/core/test_vnf.py +++ b/functest/tests/unit/core/test_vnf.py @@ -21,8 +21,6 @@ from functest.core import testcase class VnfBaseTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.test = vnf.VnfOnBoarding( project='functest', case_name='aaa') @@ -148,12 +146,12 @@ class VnfBaseTesting(unittest.TestCase): def test_deploy_vnf_unimplemented(self): with self.assertRaises(Exception) as context: self.test.deploy_vnf() - self.assertTrue('VNF not deployed' in context.exception) + self.assertIn('VNF not deployed', str(context.exception)) def test_test_vnf_unimplemented(self): with self.assertRaises(Exception) as context: self.test.test_vnf()() - self.assertTrue('VNF not tested' in context.exception) + self.assertIn('VNF not tested', str(context.exception)) def test_parse_results_ex_ok(self): self.test.details['test_vnf']['status'] = 'PASS' @@ -165,4 +163,5 @@ class VnfBaseTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/energy/test_functest_energy.py b/functest/tests/unit/energy/test_functest_energy.py index ffe044bc..6387b97b 100644 --- a/functest/tests/unit/energy/test_functest_energy.py +++ b/functest/tests/unit/energy/test_functest_energy.py @@ -19,8 +19,6 @@ import functest.energy.energy as energy CASE_NAME = "UNIT_test_CASE" STEP_NAME = "UNIT_test_STEP" -logging.disable(logging.CRITICAL) - class MockHttpResponse(object): # pylint: disable=too-few-public-methods """Mock response for Energy recorder API.""" @@ -274,4 +272,5 @@ class EnergyRecorderTest(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/features/test_barometer.py b/functest/tests/unit/features/test_barometer.py index 8ca463b2..8c2585d9 100644 --- a/functest/tests/unit/features/test_barometer.py +++ b/functest/tests/unit/features/test_barometer.py @@ -16,15 +16,12 @@ import unittest import mock from functest.core import testcase -sys.modules['baro_tests'] = mock.Mock() # noqa -# pylint: disable=wrong-import-position -from functest.opnfv_tests.features import barometer +with mock.patch('functest.utils.functest_utils.get_parameter_from_yaml'): + from functest.opnfv_tests.features import barometer class BarometerTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - _case_name = "barometercollectd" _project_name = "barometer" @@ -47,4 +44,5 @@ class BarometerTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/odl/test_odl.py b/functest/tests/unit/odl/test_odl.py index e2778e24..60adf211 100644 --- a/functest/tests/unit/odl/test_odl.py +++ b/functest/tests/unit/odl/test_odl.py @@ -32,8 +32,6 @@ class ODLVisitorTesting(unittest.TestCase): """The class testing ODLResultVisitor.""" # pylint: disable=missing-docstring - logging.disable(logging.CRITICAL) - def setUp(self): self.visitor = odl.ODLResultVisitor() @@ -312,8 +310,6 @@ class ODLMainTesting(ODLTesting): def test_run_ko(self, *args): with mock.patch.object(self.test, 'set_robotframework_vars', return_value=True), \ - mock.patch.object(odl, 'open', mock.mock_open(), - create=True), \ self.assertRaises(RobotError): self._test_main(testcase.TestCase.EX_RUN_ERROR, *args) @@ -322,71 +318,33 @@ class ODLMainTesting(ODLTesting): def test_parse_results_ko(self, *args): with mock.patch.object(self.test, 'set_robotframework_vars', return_value=True), \ - mock.patch.object(odl, 'open', mock.mock_open(), - create=True), \ mock.patch.object(self.test, 'parse_results', side_effect=RobotError): self._test_main(testcase.TestCase.EX_RUN_ERROR, *args) - @mock.patch('os.remove', side_effect=Exception) - @mock.patch('robot.run') - @mock.patch('os.makedirs') - def test_remove_exc(self, *args): - with mock.patch.object(self.test, 'set_robotframework_vars', - return_value=True), \ - mock.patch.object(self.test, 'parse_results'), \ - self.assertRaises(Exception): - self._test_main(testcase.TestCase.EX_OK, *args) - - @mock.patch('os.remove') @mock.patch('robot.run') @mock.patch('os.makedirs') def test_ok(self, *args): with mock.patch.object(self.test, 'set_robotframework_vars', return_value=True), \ - mock.patch.object(odl, 'open', mock.mock_open(), - create=True), \ mock.patch.object(self.test, 'parse_results'): self._test_main(testcase.TestCase.EX_OK, *args) - @mock.patch('os.remove') @mock.patch('robot.run') @mock.patch('os.makedirs', side_effect=OSError(errno.EEXIST, '')) def test_makedirs_oserror17(self, *args): with mock.patch.object(self.test, 'set_robotframework_vars', return_value=True), \ - mock.patch.object(odl, 'open', mock.mock_open(), - create=True) as mock_open, \ mock.patch.object(self.test, 'parse_results'): self._test_main(testcase.TestCase.EX_OK, *args) - mock_open.assert_called_once_with( - os.path.join(odl.ODLTests.res_dir, 'stdout.txt'), 'w+') - @mock.patch('os.remove') @mock.patch('robot.run', return_value=1) @mock.patch('os.makedirs') def test_testcases_in_failure(self, *args): with mock.patch.object(self.test, 'set_robotframework_vars', return_value=True), \ - mock.patch.object(odl, 'open', mock.mock_open(), - create=True) as mock_open, \ mock.patch.object(self.test, 'parse_results'): self._test_main(testcase.TestCase.EX_OK, *args) - mock_open.assert_called_once_with( - os.path.join(odl.ODLTests.res_dir, 'stdout.txt'), 'w+') - - @mock.patch('os.remove', side_effect=OSError) - @mock.patch('robot.run') - @mock.patch('os.makedirs') - def test_remove_oserror(self, *args): - with mock.patch.object(self.test, 'set_robotframework_vars', - return_value=True), \ - mock.patch.object(odl, 'open', mock.mock_open(), - create=True) as mock_open, \ - mock.patch.object(self.test, 'parse_results'): - self._test_main(testcase.TestCase.EX_OK, *args) - mock_open.assert_called_once_with( - os.path.join(odl.ODLTests.res_dir, 'stdout.txt'), 'w+') class ODLRunTesting(ODLTesting): @@ -636,4 +594,5 @@ class ODLArgParserTesting(ODLTesting): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/openstack/rally/test_rally.py b/functest/tests/unit/openstack/rally/test_rally.py index c7828618..b9e78616 100644 --- a/functest/tests/unit/openstack/rally/test_rally.py +++ b/functest/tests/unit/openstack/rally/test_rally.py @@ -19,8 +19,6 @@ from functest.utils.constants import CONST class OSRallyTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.nova_client = mock.Mock() self.neutron_client = mock.Mock() @@ -39,7 +37,7 @@ class OSRallyTesting(unittest.TestCase): self.polling_iter = 2 def test_build_task_args_missing_floating_network(self): - CONST.OS_AUTH_URL = None + CONST.__setattr__('OS_AUTH_URL', None) with mock.patch('functest.opnfv_tests.openstack.rally.rally.' 'os_utils.get_external_net', return_value=None): @@ -47,7 +45,7 @@ class OSRallyTesting(unittest.TestCase): self.assertEqual(task_args['floating_network'], '') def test_build_task_args_missing_net_id(self): - CONST.OS_AUTH_URL = None + CONST.__setattr__('OS_AUTH_URL', None) self.rally_base.network_dict['net_id'] = '' with mock.patch('functest.opnfv_tests.openstack.rally.rally.' 'os_utils.get_external_net', @@ -56,7 +54,7 @@ class OSRallyTesting(unittest.TestCase): self.assertEqual(task_args['netid'], '') def test_build_task_args_missing_auth_url(self): - CONST.OS_AUTH_URL = None + CONST.__setattr__('OS_AUTH_URL', None) with mock.patch('functest.opnfv_tests.openstack.rally.rally.' 'os_utils.get_external_net', return_value='test_floating_network'): @@ -136,8 +134,8 @@ class OSRallyTesting(unittest.TestCase): 'lineline') def test_excl_scenario_default(self): - CONST.INSTALLER_TYPE = 'test_installer' - CONST.DEPLOY_SCENARIO = 'test_scenario' + CONST.__setattr__('INSTALLER_TYPE', 'test_installer') + CONST.__setattr__('DEPLOY_SCENARIO', 'test_scenario') dic = {'scenario': [{'scenarios': ['test_scenario'], 'installers': ['test_installer'], 'tests': ['test']}]} @@ -154,8 +152,8 @@ class OSRallyTesting(unittest.TestCase): []) def test_excl_func_default(self): - CONST.INSTALLER_TYPE = 'test_installer' - CONST.DEPLOY_SCENARIO = 'test_scenario' + CONST.__setattr__('INSTALLER_TYPE', 'test_installer') + CONST.__setattr__('DEPLOY_SCENARIO', 'test_scenario') dic = {'functionality': [{'functions': ['no_live_migration'], 'tests': ['test']}]} with mock.patch('__builtin__.open', mock.mock_open()), \ @@ -375,4 +373,5 @@ class OSRallyTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/openstack/refstack_client/test_refstack_client.py b/functest/tests/unit/openstack/refstack_client/test_refstack_client.py index 60e180c9..8c149baa 100644 --- a/functest/tests/unit/openstack/refstack_client/test_refstack_client.py +++ b/functest/tests/unit/openstack/refstack_client/test_refstack_client.py @@ -17,11 +17,12 @@ from functest.utils.constants import CONST class OSRefstackClientTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - _config = \ - os.path.join(CONST.dir_functest_test, CONST.refstack_tempest_conf_path) - _testlist = \ - os.path.join(CONST.dir_functest_test, CONST.refstack_defcore_list) + _config = os.path.join( + CONST.__getattribute__('dir_functest_test'), + CONST.__getattribute__('refstack_tempest_conf_path')) + _testlist = os.path.join( + CONST.__getattribute__('dir_functest_test'), + CONST.__getattribute__('refstack_defcore_list')) def setUp(self): self.defaultargs = {'config': self._config, @@ -29,12 +30,13 @@ class OSRefstackClientTesting(unittest.TestCase): self.refstackclient = refstack_client.RefstackClient() def test_source_venv(self): - CONST.dir_refstack_client = 'test_repo_dir' + CONST.__setattr__('dir_refstack_client', 'test_repo_dir') with mock.patch('functest.opnfv_tests.openstack.refstack_client.' 'refstack_client.ft_utils.execute_command') as m: cmd = ("cd {0};" ". .venv/bin/activate;" - "cd -;".format(CONST.dir_refstack_client)) + "cd -;" + .format(CONST.__getattribute__('dir_refstack_client'))) self.refstackclient.source_venv() m.assert_any_call(cmd) @@ -45,9 +47,10 @@ class OSRefstackClientTesting(unittest.TestCase): 'refstack_client.ft_utils.execute_command') as m: cmd = ("cd {0};" "./refstack-client test -c {1} -v --test-list {2};" - "cd -;".format(CONST.dir_refstack_client, - config, - testlist)) + "cd -;" + .format(CONST.__getattribute__('dir_refstack_client'), + config, + testlist)) self.refstackclient.run_defcore(config, testlist) m.assert_any_call(cmd) @@ -63,7 +66,7 @@ class OSRefstackClientTesting(unittest.TestCase): self.assertEqual(self.refstackclient.main(**kwargs), status) if len(args) > 0: args[0].assert_called_once_with( - refstack_client.RefstackClient.result_dir) + refstack_client.RefstackClient.result_dir) if len(args) > 1: args @@ -101,4 +104,5 @@ class OSRefstackClientTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/openstack/tempest/test_conf_utils.py b/functest/tests/unit/openstack/tempest/test_conf_utils.py index 8ca5cc5b..23f6e45c 100644 --- a/functest/tests/unit/openstack/tempest/test_conf_utils.py +++ b/functest/tests/unit/openstack/tempest/test_conf_utils.py @@ -16,8 +16,6 @@ from functest.utils.constants import CONST class OSTempestConfUtilsTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def test_create_tempest_resources_missing_network_dic(self): with mock.patch('functest.opnfv_tests.openstack.tempest.conf_utils.' 'os_utils.get_keystone_client', @@ -54,12 +52,12 @@ class OSTempestConfUtilsTesting(unittest.TestCase): return_value=(mock.Mock(), None)), \ self.assertRaises(Exception) as context: - CONST.tempest_use_custom_images = True + CONST.__setattr__('tempest_use_custom_images', True) conf_utils.create_tempest_resources() msg = 'Failed to create image' self.assertTrue(msg in context) - CONST.tempest_use_custom_images = False + CONST.__setattr__('tempest_use_custom_images', False) conf_utils.create_tempest_resources(use_custom_images=True) msg = 'Failed to create image' self.assertTrue(msg in context) @@ -84,20 +82,20 @@ class OSTempestConfUtilsTesting(unittest.TestCase): 'os_utils.get_or_create_flavor', return_value=(mock.Mock(), None)), \ self.assertRaises(Exception) as context: - CONST.tempest_use_custom_images = True - CONST.tempest_use_custom_flavors = True + CONST.__setattr__('tempest_use_custom_images', True) + CONST.__setattr__('tempest_use_custom_flavors', True) conf_utils.create_tempest_resources() msg = 'Failed to create flavor' self.assertTrue(msg in context) - CONST.tempest_use_custom_images = True - CONST.tempest_use_custom_flavors = False + CONST.__setattr__('tempest_use_custom_images', True) + CONST.__setattr__('tempest_use_custom_flavors', False) conf_utils.create_tempest_resources(use_custom_flavors=False) msg = 'Failed to create flavor' self.assertTrue(msg in context) def test_get_verifier_id_missing_verifier(self): - CONST.tempest_deployment_name = 'test_deploy_name' + CONST.__setattr__('tempest_deployment_name', 'test_deploy_name') with mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.subprocess.Popen') as mock_popen, \ self.assertRaises(Exception): @@ -108,7 +106,7 @@ class OSTempestConfUtilsTesting(unittest.TestCase): conf_utils.get_verifier_id(), def test_get_verifier_id_default(self): - CONST.tempest_deployment_name = 'test_deploy_name' + CONST.__setattr__('tempest_deployment_name', 'test_deploy_name') with mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.subprocess.Popen') as mock_popen: mock_stdout = mock.Mock() @@ -120,7 +118,7 @@ class OSTempestConfUtilsTesting(unittest.TestCase): 'test_deploy_id') def test_get_verifier_deployment_id_missing_rally(self): - CONST.rally_deployment_name = 'test_rally_deploy_name' + CONST.__setattr__('tempest_deployment_name', 'test_deploy_name') with mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.subprocess.Popen') as mock_popen, \ self.assertRaises(Exception): @@ -131,7 +129,7 @@ class OSTempestConfUtilsTesting(unittest.TestCase): conf_utils.get_verifier_deployment_id(), def test_get_verifier_deployment_id_default(self): - CONST.rally_deployment_name = 'test_rally_deploy_name' + CONST.__setattr__('tempest_deployment_name', 'test_deploy_name') with mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.subprocess.Popen') as mock_popen: mock_stdout = mock.Mock() @@ -240,8 +238,8 @@ class OSTempestConfUtilsTesting(unittest.TestCase): mock.patch('__builtin__.open', mock.mock_open()), \ mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.shutil.copyfile'): - CONST.dir_functest_test = 'test_dir' - CONST.refstack_tempest_conf_path = 'test_path' + CONST.__setattr__('dir_functest_test', 'test_dir') + CONST.__setattr__('refstack_tempest_conf_path', 'test_path') conf_utils.configure_tempest_defcore('test_dep_dir', img_flavor_dict) mset.assert_any_call('compute', 'image_ref', 'test_image_id') @@ -266,8 +264,8 @@ class OSTempestConfUtilsTesting(unittest.TestCase): mock.patch('__builtin__.open', mock.mock_open()), \ mock.patch('functest.opnfv_tests.openstack.tempest.' 'conf_utils.backup_tempest_config'): - CONST.dir_functest_test = 'test_dir' - CONST.OS_ENDPOINT_TYPE = None + CONST.__setattr__('dir_functest_test', 'test_dir') + CONST.__setattr__('OS_ENDPOINT_TYPE', None) conf_utils.\ configure_tempest_update_params('test_conf_file', IMAGE_ID=image_id, @@ -277,25 +275,25 @@ class OSTempestConfUtilsTesting(unittest.TestCase): self.assertTrue(mwrite.called) def test_configure_tempest_update_params_missing_image_id(self): - CONST.tempest_use_custom_images = True + CONST.__setattr__('tempest_use_custom_images', True) self._test_missing_param(('compute', 'image_ref', 'test_image_id'), 'test_image_id', None) def test_configure_tempest_update_params_missing_image_id_alt(self): - CONST.tempest_use_custom_images = True + CONST.__setattr__('tempest_use_custom_images', True) conf_utils.IMAGE_ID_ALT = 'test_image_id_alt' self._test_missing_param(('compute', 'image_ref_alt', 'test_image_id_alt'), None, None) def test_configure_tempest_update_params_missing_flavor_id(self): - CONST.tempest_use_custom_flavors = True + CONST.__setattr__('tempest_use_custom_flavors', True) self._test_missing_param(('compute', 'flavor_ref', 'test_flavor_id'), None, 'test_flavor_id') def test_configure_tempest_update_params_missing_flavor_id_alt(self): - CONST.tempest_use_custom_flavors = True + CONST.__setattr__('tempest_use_custom_flavors', True) conf_utils.FLAVOR_ID_ALT = 'test_flavor_id_alt' self._test_missing_param(('compute', 'flavor_ref_alt', 'test_flavor_id_alt'), None, @@ -371,4 +369,5 @@ class OSTempestConfUtilsTesting(unittest.TestCase): mexe.assert_called_once_with(cmd, error_msg=error_msg) if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/openstack/tempest/test_tempest.py b/functest/tests/unit/openstack/tempest/test_tempest.py index bb75c9ed..b8b258b3 100644 --- a/functest/tests/unit/openstack/tempest/test_tempest.py +++ b/functest/tests/unit/openstack/tempest/test_tempest.py @@ -18,8 +18,6 @@ from functest.utils.constants import CONST class OSTempestTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): with mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'conf_utils.get_verifier_id', @@ -114,8 +112,8 @@ class OSTempestTesting(unittest.TestCase): mock.patch.object(self.tempestcommon, 'read_file', return_value=['test1', 'test2']): conf_utils.TEMPEST_BLACKLIST = Exception - CONST.INSTALLER_TYPE = 'installer_type' - CONST.DEPLOY_SCENARIO = 'deploy_scenario' + CONST.__setattr__('INSTALLER_TYPE', 'installer_type') + CONST.__setattr__('DEPLOY_SCENARIO', 'deploy_scenario') self.tempestcommon.apply_tempest_blacklist() obj = m() obj.write.assert_any_call('test1\n') @@ -130,8 +128,8 @@ class OSTempestTesting(unittest.TestCase): return_value=['test1', 'test2']), \ mock.patch('functest.opnfv_tests.openstack.tempest.tempest.' 'yaml.safe_load', return_value=item_dict): - CONST.INSTALLER_TYPE = 'installer_type' - CONST.DEPLOY_SCENARIO = 'deploy_scenario' + CONST.__setattr__('INSTALLER_TYPE', 'installer_type') + CONST.__setattr__('DEPLOY_SCENARIO', 'deploy_scenario') self.tempestcommon.apply_tempest_blacklist() obj = m() obj.write.assert_any_call('test1\n') @@ -230,4 +228,5 @@ class OSTempestTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/test_logging.ini b/functest/tests/unit/test_logging.ini deleted file mode 100644 index 492767d1..00000000 --- a/functest/tests/unit/test_logging.ini +++ /dev/null @@ -1,27 +0,0 @@ -[loggers] -keys=root,functest_logger - -[logger_root] -level=DEBUG -handlers=console - -[logger_functest_logger] -level=DEBUG -handlers=console -qualname=functest.utils.functest_logger -propagate=0 - -[handlers] -keys=console - -[handler_console] -class=StreamHandler -level=INFO -formatter=standard -args=(sys.stdout,) - -[formatters] -keys=standard - -[formatter_standard] -format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
\ No newline at end of file diff --git a/functest/tests/unit/utils/test_decorators.py b/functest/tests/unit/utils/test_decorators.py index f8bd9a54..44448f23 100644 --- a/functest/tests/unit/utils/test_decorators.py +++ b/functest/tests/unit/utils/test_decorators.py @@ -32,8 +32,6 @@ URL = 'file://{}'.format(FILE) class DecoratorsTesting(unittest.TestCase): # pylint: disable=missing-docstring - logging.disable(logging.CRITICAL) - _case_name = 'base' _project_name = 'functest' _start_time = 1.0 @@ -65,7 +63,7 @@ class DecoratorsTesting(unittest.TestCase): 'pod_name': self._node_name, 'installer': self._installer_type, 'scenario': self._deploy_scenario, 'version': VERSION, 'details': {}, 'criteria': self._result} - return json.dumps(data) + return json.dumps(data, sort_keys=True) @mock.patch('{}.get_db_url'.format(functest_utils.__name__), return_value='http://127.0.0.1') @@ -131,5 +129,5 @@ class DecoratorsTesting(unittest.TestCase): if __name__ == "__main__": - logging.basicConfig() + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/utils/test_functest_utils.py b/functest/tests/unit/utils/test_functest_utils.py index 57e0c465..12604c1a 100644 --- a/functest/tests/unit/utils/test_functest_utils.py +++ b/functest/tests/unit/utils/test_functest_utils.py @@ -23,8 +23,6 @@ from functest.utils import functest_utils class FunctestUtilsTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.url = 'http://www.opnfv.org/' self.timeout = 5 @@ -57,7 +55,8 @@ class FunctestUtilsTesting(unittest.TestCase): self.testcase_dict = {'case_name': 'testname', 'criteria': self.criteria} self.parameter = 'general.openstack.image_name' - self.config_yaml = 'test_config_yaml-' + self.config_yaml = os.path.normpath(os.path.join(os.path.dirname( + os.path.abspath(__file__)), '../../../ci/config_functest.yaml')) self.db_url_env = 'http://foo/testdb' self.file_yaml = {'general': {'openstack': {'image_name': 'test_image_name'}}} @@ -453,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: @@ -477,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: @@ -587,4 +584,5 @@ class FunctestUtilsTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/utils/test_openstack_clean.py b/functest/tests/unit/utils/test_openstack_clean.py index 15669538..fe7b50d4 100644 --- a/functest/tests/unit/utils/test_openstack_clean.py +++ b/functest/tests/unit/utils/test_openstack_clean.py @@ -15,8 +15,6 @@ from functest.tests.unit import test_utils class OSCleanTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def _get_instance(self, key): mock_obj = mock.Mock() attrs = {'id': 'id' + str(key), 'name': 'name' + str(key), @@ -723,4 +721,5 @@ class OSCleanTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/utils/test_openstack_snapshot.py b/functest/tests/unit/utils/test_openstack_snapshot.py index 52744db1..d3f93994 100644 --- a/functest/tests/unit/utils/test_openstack_snapshot.py +++ b/functest/tests/unit/utils/test_openstack_snapshot.py @@ -14,8 +14,6 @@ from functest.utils import openstack_snapshot class OSTackerTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def _get_instance(self, key): mock_obj = mock.Mock() attrs = {'id': 'id' + str(key), 'name': 'name' + str(key), @@ -232,4 +230,5 @@ class OSTackerTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/utils/test_openstack_tacker.py b/functest/tests/unit/utils/test_openstack_tacker.py index 37d77a18..3c0fc3d0 100644 --- a/functest/tests/unit/utils/test_openstack_tacker.py +++ b/functest/tests/unit/utils/test_openstack_tacker.py @@ -17,8 +17,6 @@ from functest.tests.unit import test_utils class OSTackerTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.tacker_client = mock.Mock() self.getresponse = {'vnfds': [{'id': 'test_id'}], @@ -522,4 +520,5 @@ class OSTackerTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/utils/test_openstack_utils.py b/functest/tests/unit/utils/test_openstack_utils.py index a7df264c..15b54057 100644 --- a/functest/tests/unit/utils/test_openstack_utils.py +++ b/functest/tests/unit/utils/test_openstack_utils.py @@ -17,8 +17,6 @@ from functest.utils import openstack_utils class OSUtilsTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def _get_env_cred_dict(self, os_prefix=''): return {'OS_USERNAME': os_prefix + 'username', 'OS_PASSWORD': os_prefix + 'password', @@ -1839,4 +1837,5 @@ class OSUtilsTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/vnf/ims/test_clearwater.py b/functest/tests/unit/vnf/ims/test_clearwater.py index 18bebfdf..bc31c33e 100644 --- a/functest/tests/unit/vnf/ims/test_clearwater.py +++ b/functest/tests/unit/vnf/ims/test_clearwater.py @@ -16,8 +16,6 @@ from functest.opnfv_tests.vnf.ims import orchestrator_cloudify class ClearwaterTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.clearwater = clearwater.Clearwater() self.orchestrator = orchestrator_cloudify.Orchestrator('test_dir') @@ -83,4 +81,5 @@ class ClearwaterTesting(unittest.TestCase): 'test_domain') if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/vnf/ims/test_cloudify_ims.py b/functest/tests/unit/vnf/ims/test_cloudify_ims.py index f47ea865..c3c04e1d 100644 --- a/functest/tests/unit/vnf/ims/test_cloudify_ims.py +++ b/functest/tests/unit/vnf/ims/test_cloudify_ims.py @@ -15,8 +15,6 @@ from functest.opnfv_tests.vnf.ims import cloudify_ims class CloudifyImsTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): with mock.patch('functest.opnfv_tests.vnf.ims.cloudify_ims.' 'os.makedirs'), \ @@ -491,4 +489,5 @@ class CloudifyImsTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/vnf/ims/test_ims_base.py b/functest/tests/unit/vnf/ims/test_ims_base.py index e283199c..db5b18d7 100644 --- a/functest/tests/unit/vnf/ims/test_ims_base.py +++ b/functest/tests/unit/vnf/ims/test_ims_base.py @@ -15,8 +15,6 @@ from functest.opnfv_tests.vnf.ims import clearwater_ims_base as ims_base class ClearwaterOnBoardingBaseTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): with mock.patch('functest.opnfv_tests.vnf.ims.cloudify_ims.' 'os.makedirs'): @@ -55,4 +53,5 @@ class ClearwaterOnBoardingBaseTesting(unittest.TestCase): if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) diff --git a/functest/tests/unit/vnf/ims/test_orchestrator_cloudify.py b/functest/tests/unit/vnf/ims/test_orchestrator_cloudify.py index bf6d483f..57064664 100644 --- a/functest/tests/unit/vnf/ims/test_orchestrator_cloudify.py +++ b/functest/tests/unit/vnf/ims/test_orchestrator_cloudify.py @@ -16,8 +16,6 @@ from functest.opnfv_tests.vnf.ims import orchestrator_cloudify class ImsVnfTesting(unittest.TestCase): - logging.disable(logging.CRITICAL) - def setUp(self): self.orchestrator = orchestrator_cloudify.Orchestrator('test_dir') self.bp = {'file_name': 'test_file', @@ -174,4 +172,5 @@ class ImsVnfTesting(unittest.TestCase): 'test_subnet') if __name__ == "__main__": + logging.disable(logging.CRITICAL) unittest.main(verbosity=2) |