code: def testRunAipTraining(self):
      aip_executor = (
          ai_platform_training_executor.AiPlatformTrainingExecutor()
      )
  
      aip_executor.Do(
          input_dict=self._inputs,
          output_dict=self._outputs,
          exec_properties=self._exec_properties,
      )
  
      self._mock_create.assert_called_once_with(
          body=self._expected_job_spec,
          parent="projects/{}".format(self._project_id),
      )
  
file_path: tfx/tfx/orchestration/kubeflow/v2/components/experimental/ai_platform_training_executor_test.py
imports: import copy
  from unittest import mock
  from googleapiclient import discovery
  import tensorflow
  from tfx.dsl.component.experimental import placeholders
  from tfx.orchestration.kubeflow.v2.components.experimental import ai_platform_training_executor
  from tfx.types import artifact_utils
  from tfx.types import standard_artifacts
  from tfx.utils import json_utils
  from tfx.utils import test_case_utils
label_desc: Use image node_id 3 for calling the AiPlatformTrainingExecutorTest obj's underlying member method code with example usage: obj.testRunAipTraining() without return types