code: def testBuildTensorInfoOp(self):
      x = constant_op.constant(1, name="x")
      y = constant_op.constant(2, name="y")
      z = control_flow_ops.group([x, y], name="op_z")
      z_op_info = utils.build_tensor_info_from_op(z)
      self.assertEqual("op_z", z_op_info.name)
      self.assertEqual(types_pb2.DT_INVALID, z_op_info.dtype)
      self.assertEqual(0, len(z_op_info.tensor_shape.dim))
  
imports: from tensorflow.core.framework import types_pb2
  from tensorflow.core.protobuf import struct_pb2
  from tensorflow.python.eager import context
  from tensorflow.python.framework import constant_op
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import ops
  from tensorflow.python.framework import sparse_tensor
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import control_flow_ops
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.platform import test
  from tensorflow.python.saved_model import nested_structure_coder
  from tensorflow.python.saved_model import utils
label_desc: Use image node_id 1 for calling the UtilsTest obj's underlying member method code with example usage: obj.testBuildTensorInfoOp() without return types