From debf35a0dceaf0f9b2113ca5845c75214528bb8c Mon Sep 17 00:00:00 2001 From: ashishk1994 Date: Mon, 27 Mar 2017 02:04:13 +0530 Subject: More Unit Tests for ci directory This patch adds more unit tests for ci/prepare_env, ci/run_tests and ci/tier_handler to reach the coverage more than 80% Change-Id: Ia3b7105542105bf8c5e3db58c898ba0569190a80 Signed-off-by: ashishk1994 --- functest/tests/unit/ci/test_run_tests.py | 84 +++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 2 deletions(-) (limited to 'functest/tests/unit/ci/test_run_tests.py') diff --git a/functest/tests/unit/ci/test_run_tests.py b/functest/tests/unit/ci/test_run_tests.py index 021406109..7d02b1af1 100644 --- a/functest/tests/unit/ci/test_run_tests.py +++ b/functest/tests/unit/ci/test_run_tests.py @@ -37,6 +37,9 @@ class RunTestsTesting(unittest.TestCase): attrs = {'get_tiers.return_value': [self.tier]} 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) @@ -121,8 +124,8 @@ class RunTestsTesting(unittest.TestCase): def test_run_tests_import_test_class_exception(self): mock_test = mock.Mock() - args = {'get_name': 'test_name', - 'needs_clean': False} + 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'), \ @@ -133,6 +136,28 @@ class RunTestsTesting(unittest.TestCase): msg = "Cannot import the class for the test case." self.assertTrue(msg in context) + def test_run_tests_default(self): + mock_test = mock.Mock() + args = {'get_name.return_value': 'test_name', + 'needs_clean.return_value': True} + mock_test.configure_mock(**args) + 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.update_test_info'), \ + mock.patch('functest.ci.run_tests.get_run_dict', + return_value=test_run_dict), \ + mock.patch('functest.ci.run_tests.generate_report.main'), \ + 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) + @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'), \ @@ -187,6 +212,61 @@ class RunTestsTesting(unittest.TestCase): self.assertEqual(run_tests.main(**kwargs), run_tests.Result.EX_ERROR) + def test_main_default(self): + kwargs = {'test': 'test_name', 'noclean': True, 'report': True} + mock_obj = mock.Mock() + args = {'get_tier.return_value': True, + 'get_test.return_value': False} + 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.generate_report.init'), \ + mock.patch('functest.ci.run_tests.run_tier') as m: + self.assertEqual(run_tests.main(**kwargs), + run_tests.Result.EX_OK) + self.assertTrue(m.called) + + mock_obj = mock.Mock() + args = {'get_tier.return_value': False, + 'get_test.return_value': True} + 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.generate_report.init'), \ + mock.patch('functest.ci.run_tests.run_test') as m: + self.assertEqual(run_tests.main(**kwargs), + run_tests.Result.EX_OK) + self.assertTrue(m.called) + + kwargs = {'test': 'all', 'noclean': True, 'report': True} + mock_obj = mock.Mock() + 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', + return_value=mock_obj), \ + mock.patch('functest.ci.run_tests.source_rc_file'), \ + mock.patch('functest.ci.run_tests.generate_report.init'), \ + mock.patch('functest.ci.run_tests.run_all') as m: + self.assertEqual(run_tests.main(**kwargs), + run_tests.Result.EX_OK) + self.assertTrue(m.called) + + kwargs = {'test': 'any', 'noclean': True, 'report': True} + mock_obj = mock.Mock() + 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', + return_value=mock_obj), \ + mock.patch('functest.ci.run_tests.source_rc_file'), \ + mock.patch('functest.ci.run_tests.generate_report.init'), \ + mock.patch('functest.ci.run_tests.logger.debug') as m: + self.assertEqual(run_tests.main(**kwargs), + run_tests.Result.EX_ERROR) + self.assertTrue(m.called) if __name__ == "__main__": unittest.main(verbosity=2) -- cgit 1.2.3-korg