From 2ad07442cebfaca7d5d70191f9ffca1cabdf4370 Mon Sep 17 00:00:00 2001 From: Cédric Ollivier Date: Fri, 10 Aug 2018 13:04:11 +0200 Subject: Skip the selected testcase too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It completes "Allow calling a skip test" [1] [1] https://gerrit.opnfv.org/gerrit/60655 Change-Id: I02499aed56e6b23563165ea1f17b476e12408823 Signed-off-by: Cédric Ollivier (cherry picked from commit a9491ef0948f8fe3eb3772b6b6ae44d86bde7e9b) --- tox.ini | 1 - xtesting/ci/run_tests.py | 2 +- xtesting/ci/tier_builder.py | 3 ++- xtesting/ci/tier_handler.py | 8 ++++-- xtesting/tests/unit/ci/test_run_tests.py | 40 +++++++++++++++++++++++++++++ xtesting/tests/unit/ci/test_tier_handler.py | 2 +- 6 files changed, 50 insertions(+), 6 deletions(-) diff --git a/tox.ini b/tox.ini index 2ee6a1c7..04018941 100644 --- a/tox.ini +++ b/tox.ini @@ -58,7 +58,6 @@ dirs = xtesting/tests/unit/utils/test_decorators.py commands = nosetests --with-coverage --cover-tests \ --cover-package xtesting.ci.tier_builder \ - --cover-package xtesting.ci.tier_handler \ --cover-package xtesting.core \ --cover-package xtesting.energy \ --cover-package xtesting.tests.unit \ diff --git a/xtesting/ci/run_tests.py b/xtesting/ci/run_tests.py index 27f9d946..255b74df 100644 --- a/xtesting/ci/run_tests.py +++ b/xtesting/ci/run_tests.py @@ -138,7 +138,7 @@ class Runner(object): def run_test(self, test): """Run one test case""" - if not test.is_enabled(): + if not test.is_enabled() or test.is_skipped(): msg = prettytable.PrettyTable( header_style='upper', padding_width=5, field_names=['test case', 'project', 'duration', diff --git a/xtesting/ci/tier_builder.py b/xtesting/ci/tier_builder.py index a4169099..3383a763 100644 --- a/xtesting/ci/tier_builder.py +++ b/xtesting/ci/tier_builder.py @@ -45,7 +45,6 @@ class TierBuilder(object): name=dic_tier['name'], order=dic_tier['order'], ci_loop=dic_tier['ci_loop'], description=dic_tier['description']) - for dic_testcase in dic_tier['testcases']: if not dic_testcase.get('dependencies'): installer = '.*' @@ -60,6 +59,7 @@ class TierBuilder(object): testcase = tier_handler.TestCase( name=dic_testcase['case_name'], enabled=dic_testcase.get('enabled', True), + skipped=False, dependency=dep, criteria=dic_testcase['criteria'], blocking=dic_testcase['blocking'], description=dic_testcase['description'], @@ -69,6 +69,7 @@ class TierBuilder(object): testcase.is_enabled()): tier.add_test(testcase) else: + testcase.skipped = True tier.skip_test(testcase) self.tier_objects.append(tier) diff --git a/xtesting/ci/tier_handler.py b/xtesting/ci/tier_handler.py index 51f031c0..4e413f51 100644 --- a/xtesting/ci/tier_handler.py +++ b/xtesting/ci/tier_handler.py @@ -100,14 +100,15 @@ class Tier(object): return msg.get_string() -class TestCase(object): +class TestCase(object): # pylint: disable=too-many-instance-attributes - def __init__(self, name, enabled, dependency, criteria, blocking, + def __init__(self, name, enabled, skipped, dependency, criteria, blocking, description="", project=""): # pylint: disable=too-many-arguments self.name = name self.enabled = enabled self.dependency = dependency + self.skipped = skipped self.criteria = criteria self.blocking = blocking self.description = description @@ -129,6 +130,9 @@ class TestCase(object): def is_enabled(self): return self.enabled + def is_skipped(self): + return self.skipped + def get_criteria(self): return self.criteria diff --git a/xtesting/tests/unit/ci/test_run_tests.py b/xtesting/tests/unit/ci/test_run_tests.py index de2af66d..3624d158 100644 --- a/xtesting/tests/unit/ci/test_run_tests.py +++ b/xtesting/tests/unit/ci/test_run_tests.py @@ -130,6 +130,8 @@ class RunTestsTesting(unittest.TestCase): def test_run_tests_import_exception(self, *args): mock_test = mock.Mock() kwargs = {'get_name.return_value': 'test_name', + 'is_skipped.return_value': False, + 'is_enabled.return_value': True, 'needs_clean.return_value': False} mock_test.configure_mock(**kwargs) with self.assertRaises(Exception) as context: @@ -145,6 +147,8 @@ class RunTestsTesting(unittest.TestCase): def test_run_tests_default(self, *args): mock_test = mock.Mock() kwargs = {'get_name.return_value': 'test_name', + 'is_skipped.return_value': False, + 'is_enabled.return_value': True, 'needs_clean.return_value': True} mock_test.configure_mock(**kwargs) test_run_dict = {'module': 'test_module', @@ -158,6 +162,42 @@ class RunTestsTesting(unittest.TestCase): self.assertEqual(self.runner.overall_result, run_tests.Result.EX_OK) + @mock.patch('xtesting.ci.run_tests.Runner.get_dict_by_test') + def test_run_tests_disabled(self, *args): + mock_test = mock.Mock() + kwargs = {'get_name.return_value': 'test_name', + 'is_skipped.return_value': False, + 'is_enabled.return_value': False, + 'needs_clean.return_value': True} + mock_test.configure_mock(**kwargs) + test_run_dict = {'module': 'test_module', + 'class': 'test_class'} + with mock.patch('xtesting.ci.run_tests.Runner.get_run_dict', + return_value=test_run_dict): + self.runner.clean_flag = True + self.runner.run_test(mock_test) + args[0].assert_not_called() + self.assertEqual(self.runner.overall_result, + run_tests.Result.EX_OK) + + @mock.patch('xtesting.ci.run_tests.Runner.get_dict_by_test') + def test_run_tests_skipped(self, *args): + mock_test = mock.Mock() + kwargs = {'get_name.return_value': 'test_name', + 'is_skipped.return_value': True, + 'is_enabled.return_value': True, + 'needs_clean.return_value': True} + mock_test.configure_mock(**kwargs) + test_run_dict = {'module': 'test_module', + 'class': 'test_class'} + with mock.patch('xtesting.ci.run_tests.Runner.get_run_dict', + return_value=test_run_dict): + self.runner.clean_flag = True + self.runner.run_test(mock_test) + args[0].assert_not_called() + self.assertEqual(self.runner.overall_result, + run_tests.Result.EX_OK) + @mock.patch('xtesting.ci.run_tests.Runner.run_test', return_value=TestCase.EX_OK) def test_run_tier_default(self, *mock_methods): diff --git a/xtesting/tests/unit/ci/test_tier_handler.py b/xtesting/tests/unit/ci/test_tier_handler.py index 97ba5ab3..dd7e1b06 100644 --- a/xtesting/tests/unit/ci/test_tier_handler.py +++ b/xtesting/tests/unit/ci/test_tier_handler.py @@ -29,7 +29,7 @@ class TierHandlerTesting(unittest.TestCase): self.tier = tier_handler.Tier( 'test_tier', 'test_order', 'test_ci_loop', description='test_desc') self.testcase = tier_handler.TestCase( - 'test_name', 'true', self.mock_depend, 'test_criteria', + 'test_name', 'true', False, self.mock_depend, 'test_criteria', True, description='test_desc', project='project_name') self.dependency = tier_handler.Dependency( 'test_installer', 'test_scenario') -- cgit 1.2.3-korg