code: def test_strict_get_exec_properties_raises_error_when_invalid_type_hint(
      self,
  ):
      with self.assertRaisesWithLiteralMatch(
          errors.InvalidTypeHintError,
          "Given type_hint = <class 'int'> but exec_property[string_key] ="
          " string_value is not compatible.",
      ):
          self._environ.strict_get("string_key", int)
      with self.assertRaisesWithLiteralMatch(
          errors.InvalidTypeHintError,
          "Given type_hint = <class 'str'> but exec_property[int_key] = 123 is"
          " not compatible.",
      ):
          self._environ.strict_get("int_key", str)
  
imports: from typing import Any, Callable, List, Optional, Type, Union
  from absl.testing import parameterized
  import tensorflow
  from tfx.orchestration.experimental.core import test_utils
  from tfx.orchestration.portable import data_types
  from tfx.orchestration.portable import execution_environ
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import artifact
  from tfx.types import standard_artifacts
  from tfx.utils.di import errors
label_desc: Use image node_id 9 for calling the ExecutionEnvironTest obj's underlying member method code with example usage: obj.test_strict_get_exec_properties_raises_error_when_invalid_type_hint() without return types