diff options
author | Ang Li <angli@google.com> | 2022-08-01 13:02:21 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-01 13:02:21 -0700 |
commit | 84a80b3e50cc752e61a196ae4b6eb740d2840d4b (patch) | |
tree | f3eb717b2773801ab4e058e833e628d0399e6198 /tests | |
parent | f2a80cad913d03695db491e12772f6b124e7f882 (diff) | |
download | mobly-84a80b3e50cc752e61a196ae4b6eb740d2840d4b.tar.gz |
Rename the `setup_generated_tests` stage to `pre_run`. (#844)
Users have identified more legit use cases where operations before `setup_class` are needed. The `setup_generated_tests` stage is essentially the stage before `setup_class`. Hence we are renaming it more properly.
Diffstat (limited to 'tests')
-rwxr-xr-x | tests/mobly/base_test_test.py | 73 |
1 files changed, 51 insertions, 22 deletions
diff --git a/tests/mobly/base_test_test.py b/tests/mobly/base_test_test.py index ebac0e0..5cc6b20 100755 --- a/tests/mobly/base_test_test.py +++ b/tests/mobly/base_test_test.py @@ -1960,6 +1960,37 @@ class BaseTestTest(unittest.TestCase): bc.unpack_userparams(arg1="haha") self.assertEqual(bc.arg1, "haha") + def test_pre_run_failure(self): + """Test code path for `pre_run` failure. + + When `pre_run` fails, pre-execution calculation is incomplete and the + number of tests requested is unknown. This is a + fatal issue that blocks any test execution in a class. + + A class level error record is generated. + Unlike `setup_class` failure, no test is considered "skipped" in this + case as execution stage never started. + """ + + class MockBaseTest(base_test.BaseTestClass): + + def pre_run(self): + raise Exception(MSG_EXPECTED_EXCEPTION) + + def logic(self, a, b): + pass + + def test_foo(self): + pass + + bt_cls = MockBaseTest(self.mock_test_cls_configs) + bt_cls.run() + self.assertEqual(len(bt_cls.results.requested), 0) + class_record = bt_cls.results.error[0] + self.assertEqual(class_record.test_name, 'pre_run') + self.assertEqual(bt_cls.results.skipped, []) + + # TODO(angli): remove after the full deprecation of `setup_generated_tests`. def test_setup_generated_tests_failure(self): """Test code path for setup_generated_tests failure. @@ -1987,14 +2018,14 @@ class BaseTestTest(unittest.TestCase): bt_cls.run() self.assertEqual(len(bt_cls.results.requested), 0) class_record = bt_cls.results.error[0] - self.assertEqual(class_record.test_name, 'setup_generated_tests') + self.assertEqual(class_record.test_name, 'pre_run') self.assertEqual(bt_cls.results.skipped, []) def test_generate_tests_run(self): class MockBaseTest(base_test.BaseTestClass): - def setup_generated_tests(self): + def pre_run(self): self.generate_tests(test_logic=self.logic, name_func=self.name_gen, arg_sets=[(1, 2), (3, 4)]) @@ -2018,7 +2049,7 @@ class BaseTestTest(unittest.TestCase): class MockBaseTest(base_test.BaseTestClass): - def setup_generated_tests(self): + def pre_run(self): self.generate_tests(test_logic=self.logic, name_func=self.name_gen, uid_func=self.uid_logic, @@ -2042,7 +2073,7 @@ class BaseTestTest(unittest.TestCase): class MockBaseTest(base_test.BaseTestClass): - def setup_generated_tests(self): + def pre_run(self): self.generate_tests(test_logic=self.logic, name_func=self.name_gen, uid_func=self.uid_logic, @@ -2068,7 +2099,7 @@ class BaseTestTest(unittest.TestCase): class MockBaseTest(base_test.BaseTestClass): - def setup_generated_tests(self): + def pre_run(self): self.generate_tests(test_logic=self.logic, name_func=self.name_gen, arg_sets=[(1, 2), (3, 4)]) @@ -2085,7 +2116,7 @@ class BaseTestTest(unittest.TestCase): self.assertEqual(len(bt_cls.results.passed), 1) self.assertEqual(bt_cls.results.passed[0].test_name, 'test_3_4') - def test_generate_tests_call_outside_of_setup_generated_tests(self): + def test_generate_tests_call_outside_of_pre_run(self): class MockBaseTest(base_test.BaseTestClass): @@ -2105,9 +2136,8 @@ class BaseTestTest(unittest.TestCase): actual_record = bt_cls.results.error[0] utils.validate_test_result(bt_cls.results) self.assertEqual(actual_record.test_name, "test_ha") - self.assertEqual( - actual_record.details, - '"generate_tests" cannot be called outside of setup_generated_tests') + self.assertEqual(actual_record.details, + '"generate_tests" cannot be called outside of pre_run') expected_summary = ("Error 1, Executed 1, Failed 0, Passed 0, " "Requested 1, Skipped 0") self.assertEqual(bt_cls.results.summary_str(), expected_summary) @@ -2116,7 +2146,7 @@ class BaseTestTest(unittest.TestCase): class MockBaseTest(base_test.BaseTestClass): - def setup_generated_tests(self): + def pre_run(self): self.generate_tests(test_logic=self.logic, name_func=self.name_gen, arg_sets=[(1, 2), (3, 4)]) @@ -2130,7 +2160,7 @@ class BaseTestTest(unittest.TestCase): bt_cls = MockBaseTest(self.mock_test_cls_configs) bt_cls.run() actual_record = bt_cls.results.error[0] - self.assertEqual(actual_record.test_name, "setup_generated_tests") + self.assertEqual(actual_record.test_name, "pre_run") self.assertEqual( actual_record.details, 'During test generation of "logic": Test name "ha" already exists' @@ -2300,11 +2330,10 @@ class BaseTestTest(unittest.TestCase): def _run_test_logic(self, arg): pass - def setup_generated_tests(self): - self.generate_tests( - self._run_test_logic, - name_func=lambda arg: f'test_generated_{arg}', - arg_sets=[(1,)]) + def pre_run(self): + self.generate_tests(self._run_test_logic, + name_func=lambda arg: f'test_generated_{arg}', + arg_sets=[(1,)]) bt_cls = MockBaseTest(self.mock_test_cls_configs) bt_cls.run() @@ -2480,7 +2509,8 @@ class BaseTestTest(unittest.TestCase): def test_retry_generated_test_last_pass(self): max_count = 3 mock_action = mock.MagicMock( - side_effect = [Exception('Fail 1'), Exception('Fail 2'), None]) + side_effect=[Exception('Fail 1'), + Exception('Fail 2'), None]) class MockBaseTest(base_test.BaseTestClass): @@ -2488,11 +2518,10 @@ class BaseTestTest(unittest.TestCase): def _run_test_logic(self, arg): mock_action() - def setup_generated_tests(self): - self.generate_tests( - self._run_test_logic, - name_func=lambda arg: f'test_generated_{arg}', - arg_sets=[(1,)]) + def pre_run(self): + self.generate_tests(self._run_test_logic, + name_func=lambda arg: f'test_generated_{arg}', + arg_sets=[(1,)]) bt_cls = MockBaseTest(self.mock_test_cls_configs) bt_cls.run() |