code: def testConvertMetricsProto(self):
      metrics_for_slice = text_format.Parse(
          """
        slice_key {}
        metric_keys_and_values {
          key {
            name: "metric_name"
          }
          value: {
            double_value { value: 1.0 }
          }
          confidence_interval {
            lower_bound: { double_value: { value: 0.5 } }
            upper_bound: { double_value: { value: 1.5 } }
          }
        }""",
          metrics_for_slice_pb2.MetricsForSlice(),
      )
  
      got = util.convert_metrics_proto_to_dict(metrics_for_slice)
      expected = (
          (),
          {
              "": {
                  "": {
                      "metric_name": {
                          "boundedValue": {
                              "lowerBound": 0.5,
                              "upperBound": 1.5,
                              "value": 1.0,
                          }
                      }
                  }
              }
          },
      )
      self.assertEqual(got, expected)
  
imports: import os
  import tensorflow
  from tensorflow_model_analysis import constants
  from tensorflow_model_analysis.eval_saved_model import testutil
  from tensorflow_model_analysis.proto import config_pb2
  from tensorflow_model_analysis.proto import metrics_for_slice_pb2
  from tensorflow_model_analysis.slicer.slicer_lib import OVERALL_SLICE_NAME
  from tensorflow_model_analysis.slicer.slicer_lib import SingleSliceSpec
  from tensorflow_model_analysis.view import util
  from tensorflow_model_analysis.view import view_types
  from google.protobuf import text_format
label_desc: Use image node_id 32 for calling the UtilTest obj's underlying member method code with example usage: obj.testConvertMetricsProto() without return types