code: def testUpdateArtifactsWithoutIdRaisesError(self):
      artifact1 = _create_tfx_artifact("x/y/1")
      artifact2 = _create_tfx_artifact("x/y/2")
      _ = _write_tfx_artifacts(
          self._mlmd_handle, [artifact1, artifact2]
      )
      artifact1.mlmd_artifact.ClearField("id")
  
      with self.assertRaisesRegex(
          ValueError, "Artifact must have an MLMD ID"
      ):
          artifact_lib.update_artifacts(
              self._mlmd_handle,
              {
                  "key": [artifact1, artifact2],
              },
          )
  
file_path: tfx/tfx/orchestration/portable/mlmd/artifact_lib_test.py
imports: from typing import Optional, Sequence
  import tensorflow
  from tfx import types
  from tfx.orchestration import metadata
  from tfx.orchestration.portable.mlmd import artifact_lib
  from tfx.types import standard_artifacts
  from tfx.utils import test_case_utils
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 6 for calling the ArtifactLibTest obj's underlying member method code with example usage: obj.testUpdateArtifactsWithoutIdRaisesError() without return types