code: def test_step_decorator(mock_job_settings):
      retry_policy = StepRetryPolicy(
          exception_types=[StepExceptionTypeEnum.THROTTLING],
          interval_seconds=5,
          max_attempts=3,
      )
  
      @step(
          name="step_name",
          display_name="step_display_name",
          description="step_description",
          retry_policies=[retry_policy],
          instance_type="ml.m5.large",
          image_uri="test_image_uri",
      )
      def sum(a, b, c, d):
          return a + b + c + d
  
      step_output = sum(2, 3, c=3, d=5)
  
      assert isinstance(step_output, DelayedReturn)
  
      function_step = get_step(step_output)
  
      assert function_step is not None
      assert "step_name" in function_step.name
      assert function_step.display_name == "step_display_name"
      assert function_step.description == "step_description"
      assert function_step.retry_policies == [retry_policy]
      assert function_step.depends_on == []
      assert function_step.func_args == (2, 3)
      assert function_step.func_kwargs == {"c": 3, "d": 5}
      assert function_step.func is not None
  
      assert function_step._job_settings is not None
      assert (
          mock_job_settings.call_args[1]["image_uri"]
          == "test_image_uri"
      )
      assert function_step._serialized_data.func is not None
      assert function_step._serialized_data.args is not None
  
imports: from __future__ import absolute_import
  from copy import deepcopy
  import pytest
  import re
  from mock import patch, Mock, ANY
  from typing import List, Tuple
  from mock.mock import MagicMock
  from sagemaker.workflow.parameters import ParameterInteger
  from sagemaker.workflow.execution_variables import ExecutionVariables
  from sagemaker.workflow.functions import Join
  from sagemaker.workflow.step_outputs import get_step
  from sagemaker.workflow.function_step import DelayedReturn, step
  from sagemaker.workflow.retry import StepRetryPolicy, StepExceptionTypeEnum
  from sagemaker.workflow.pipeline_context import _PipelineConfig
  from sagemaker.workflow.pipeline_definition_config import PipelineDefinitionConfig
label_desc: Use image node_id 1 for calling a global function with example usage: test_step_decorator(mock_job_settings) and returns: unknown