code: def testPreExecutionNewExecution(self, _):
      self._mock_metadata.search_artifacts.return_value = list(
          self._input_dict["input_string"].get()
      )
      self._mock_metadata.register_execution.side_effect = [
          self._execution
      ]
      self._mock_metadata.get_cached_outputs.side_effect = [None]
      self._mock_metadata.register_run_context_if_not_exists.side_effect = [
          metadata_store_pb2.Context()
      ]
  
      driver = base_driver.BaseDriver(
          metadata_handle=self._mock_metadata
      )
      execution_decision = driver.pre_execution(
          input_dict=self._input_dict,
          output_dict=self._output_dict,
          exec_properties=self._exec_properties,
          driver_args=self._driver_args,
          pipeline_info=self._pipeline_info,
          component_info=self._component_info,
      )
      self.assertFalse(execution_decision.use_cached_results)
      self.assertEqual(
          execution_decision.execution_id, self._execution_id
      )
      self.assertCountEqual(
          execution_decision.exec_properties, self._exec_properties
      )
      self.assertEqual(
          execution_decision.output_dict["output_data"][0].uri,
          os.path.join(
              self._pipeline_info.pipeline_root,
              self._component_info.component_id,
              "output_data",
              str(self._execution_id),
          ),
      )
      self.assertLen(
          execution_decision.output_dict["output_multi_data"], 2
      )
      for i in range(2):
          self.assertEqual(
              execution_decision.output_dict["output_multi_data"][
                  i
              ].uri,
              os.path.join(
                  self._pipeline_info.pipeline_root,
                  self._component_info.component_id,
                  "output_multi_data",
                  str(self._execution_id),
                  str(i),
              ),
          )
      self.assertEqual(
          execution_decision.input_dict["input_string"][0].value,
          _STRING_VALUE,
      )
  
imports: import os
  from unittest import mock
  import tensorflow
  from tfx import types
  from tfx.dsl.components.base import base_driver
  from tfx.dsl.io import fileio
  from tfx.orchestration import data_types
  from tfx.types import channel
  from tfx.types import channel_utils
  from tfx.types import standard_artifacts
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 2 for calling the BaseDriverTest obj's underlying member method code with example usage: obj.testPreExecutionNewExecution(_) without return types