code: def testConcatTuple(self):
      values = (
          StructuredTensor.from_pyval([{"a": 3}]),
          StructuredTensor.from_pyval([{"a": 4}]),
      )
      actual = array_ops.concat(values, axis=0)
      self.assertAllEqual(actual, [{"a": 3}, {"a": 4}])
  
imports: from absl.testing import parameterized
  from tensorflow.python.eager import def_function
  from tensorflow.python.framework import dtypes
  from tensorflow.python.framework import random_seed
  from tensorflow.python.framework import tensor
  from tensorflow.python.framework import tensor_shape
  from tensorflow.python.framework import test_util
  from tensorflow.python.ops import array_ops
  from tensorflow.python.ops import math_ops
  from tensorflow.python.ops import random_ops
  from tensorflow.python.ops.ragged import ragged_factory_ops
  from tensorflow.python.ops.ragged import ragged_tensor
  from tensorflow.python.ops.ragged import row_partition
  from tensorflow.python.ops.ragged.dynamic_ragged_shape import DynamicRaggedShape
  from tensorflow.python.ops.structured import structured_array_ops
  from tensorflow.python.ops.structured import structured_tensor
  from tensorflow.python.ops.structured.structured_tensor import StructuredTensor
  from tensorflow.python.platform import googletest
  from tensorflow.python.util import nest
label_desc: Use image node_id 18 for calling the StructuredArrayOpsTest obj's underlying member method code with example usage: obj.testConcatTuple() without return types