class_docstr: Test ability to marshall metric protos and invalid input.
class_docstr_tok: ["Test","ability","to","marshall","metric","protos","and","invalid","input","."]
docstr: Test that metric delta returns the correct proto value
docstr_tok: ["Test","that","metric","delta","returns","the","correct","proto","value"]
code: def test_value(self):
      """Test that metric delta returns the correct proto value"""
      arg_values = ["some str", 123, -1.234, None]
      proto_values = [
          "some str",
          "123",
          "-1.234",
          "—",
      ]
  
      for arg_value, proto_value in zip(arg_values, proto_values):
          st.metric("label_test", arg_value)
  
          c = self.get_delta_from_queue().new_element.metric
          self.assertEqual(c.label, "label_test")
          self.assertEqual(proto_value, c.body)
  
imports: from parameterized import parameterized
  import streamlit
  from streamlit.errors import StreamlitAPIException
  from streamlit.proto.LabelVisibilityMessage_pb2 import LabelVisibilityMessage
  from streamlit.proto.Metric_pb2 import Metric
  from streamlit.type_util import _LOGGER
  from tests.delta_generator_test_case import DeltaGeneratorTestCase
label_desc: Use image node_id 5 for calling the MetricTest obj's underlying member method code with example usage: obj.test_value() without return types