code: def testArtifactProperties(self):
      my_artifact = _MyArtifact()
      self.assertEqual(0, my_artifact.int1)
      self.assertEqual(0, my_artifact.int2)
      self.assertFalse(my_artifact.has_property("int1"))
      my_artifact.int1 = 111
      my_artifact.int2 = 222
      self.assertEqual("", my_artifact.string1)
      self.assertEqual("", my_artifact.string2)
      my_artifact.string1 = "111"
      my_artifact.string2 = "222"
      self.assertEqual(my_artifact.int1, 111)
      self.assertEqual(my_artifact.int2, 222)
      self.assertTrue(my_artifact.has_property("int1"))
      self.assertEqual(my_artifact.string1, "111")
      self.assertEqual(my_artifact.string2, "222")
      self.assertEqual(
          my_artifact.get_string_custom_property("invalid"), ""
      )
      self.assertEqual(
          my_artifact.get_int_custom_property("invalid"), 0
      )
      self.assertIsNone(my_artifact.get_custom_property("invalid"))
      self.assertNotIn(
          "invalid", my_artifact._artifact.custom_properties
      )
  
      with self.assertRaisesRegex(
          AttributeError,
          "Cannot set unknown property 'invalid' on artifact",
      ):
          my_artifact.invalid = 1
  
      with self.assertRaisesRegex(
          AttributeError,
          "Cannot set unknown property 'invalid' on artifact",
      ):
          my_artifact.invalid = "x"
  
      with self.assertRaisesRegex(
          AttributeError, "Artifact has no property 'invalid'"
      ):
          my_artifact.invalid
  
imports: import json
  import textwrap
  from unittest import mock
  from absl import logging
  import tensorflow
  from tfx.types import artifact
  from tfx.types import system_artifacts
  from tfx.types import value_artifact
  from tfx.utils import json_utils
  from google.protobuf import struct_pb2
  from google.protobuf import json_format
  from ml_metadata.proto import metadata_store_pb2
label_desc: Use image node_id 6 for calling the ArtifactTest obj's underlying member method code with example usage: obj.testArtifactProperties() without return types