def test_run_step_with_no_config(self): config = {'step-runner-config': {}} factory = StepRunner(config) with self.assertRaisesRegex( AssertionError, r"Can not run step \(foo\) because no step configuration provided." ): factory.run_step('foo')
def test_run_step_config_only_sub_step_and_is_dict_rather_then_array(self): config = { 'step-runner-config': { 'foo': { 'implementer': 'tests.helpers.sample_step_implementers.FooStepImplementer' } } } with TempDirectory() as temp_dir: factory = StepRunner(config, temp_dir.path) factory.run_step('foo')
def test_run_step_config_implementer_specified_and_no_sub_step_config_specified_StepImplementer( self): config = { 'step-runner-config': { 'foo': [{ 'implementer': 'tests.helpers.sample_step_implementers.FooStepImplementer' }] } } with TempDirectory() as temp_dir: factory = StepRunner(config, temp_dir.path) factory.run_step('foo')
def test_run_step_config_specified_StepImplementer_does_not_exist(self): config = { 'step-runner-config': { 'foo': [{ 'implementer': 'DoesNotExist' }] } } factory = StepRunner(config) with self.assertRaisesRegex( StepRunnerException, r"Could not dynamically load step \(foo\) step implementer \(DoesNotExist\)" r" from module \(ploigos_step_runner.step_implementers.foo\) with class name \(DoesNotExist\)" ): factory.run_step('foo')
def test_run_step_multiple_sub_steps_first_sub_step_fail_contine_sub_steps_on_failure_str( self, foo_step_implementer_run_step_mock, foo_step_implementer2_run_step_mock): config = { 'step-runner-config': { 'foo': [{ 'name': 'Mock Sub Step 1', 'continue-sub-steps-on-failure': 'true', 'implementer': 'tests.helpers.sample_step_implementers.FooStepImplementer' }, { 'name': 'Mock Sub Step 2', 'implementer': 'tests.helpers.sample_step_implementers.FooStepImplementer2' }] } } # mock return value mock_sub_step_1_result = StepResult( step_name='foo', sub_step_name='Mock Sub Step 1', sub_step_implementer_name= 'tests.helpers.sample_step_implementers.FooStepImplementer') mock_sub_step_1_result.success = False mock_sub_step_2_result = StepResult( step_name='foo', sub_step_name='Mock Sub Step 2', sub_step_implementer_name= 'tests.helpers.sample_step_implementers.FooStepImplementer') mock_sub_step_2_result.success = True foo_step_implementer_run_step_mock.return_value = mock_sub_step_1_result foo_step_implementer2_run_step_mock.return_value = mock_sub_step_2_result # run test step_runner = StepRunner(config) actual_success = step_runner.run_step('foo') # validate self.assertFalse(actual_success) foo_step_implementer_run_step_mock.assert_called_once() foo_step_implementer2_run_step_mock.assert_called_once()