code: def testGetCachedOutputArtifactsForNodesWithNoOuput(self):
      with metadata.Metadata(
          connection_config=self._connection_config
      ) as m:
          cache_context = context_lib.register_context_if_not_exists(
              m, context_lib.CONTEXT_TYPE_EXECUTION_CACHE, "cache_key"
          )
          cached_output = cache_utils.get_cached_outputs(
              m, cache_context
          )
          # No succeed execution is associate with this context yet, so the cached
          # output is None.
          self.assertIsNone(cached_output)
          execution_one = execution_publish_utils.register_execution(
              m,
              metadata_store_pb2.ExecutionType(name="my_type"),
              [cache_context],
          )
          execution_publish_utils.publish_succeeded_execution(
              m, execution_one.id, [cache_context]
          )
          cached_output = cache_utils.get_cached_outputs(
              m, cache_context
          )
          # A succeed execution is associate with this context, so the cached
          # output is not None but an empty dict.
          self.assertIsNotNone(cached_output)
          self.assertEmpty(cached_output)
  
imports: import os
  from unittest import mock
  import tensorflow
  from tfx.dsl.io import fileio
  from tfx.orchestration import metadata
  from tfx.orchestration.portable import cache_utils
  from tfx.orchestration.portable import execution_publish_utils
  from tfx.orchestration.portable.mlmd import context_lib
  from tfx.proto.orchestration import executable_spec_pb2
  from tfx.proto.orchestration import pipeline_pb2
  from tfx.types import standard_artifacts
  from tfx.utils import test_case_utils
  from google.protobuf import text_format
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 14 for calling the CacheUtilsTest obj's underlying member method code with example usage: obj.testGetCachedOutputArtifactsForNodesWithNoOuput() without return types