code: def testAssertDataCloseOrEqual(self):
      self.assertDataCloseOrEqual(
          [
              {"a": "first", "b": 1.0, "c": 5, "d": ("second", 2.0)},
              {"e": 2, "f": 3},
          ],
          [
              {
                  "a": "first",
                  "b": 1.0000001,
                  "c": 5,
                  "d": ("second", 2.0000001),
              },
              {"e": 2, "f": 3},
          ],
      )
      with self.assertRaisesRegexp(
          AssertionError, r"len\(.*\) != len\(\[\]\)"
      ):
          self.assertDataCloseOrEqual([{"a": 1}], [])
      with self.assertRaisesRegexp(
          AssertionError,
          re.compile(
              "Element counts were not equal.*: Row 0", re.DOTALL
          ),
      ):
          self.assertDataCloseOrEqual([{"a": 1}], [{"b": 1}])
      with self.assertRaisesRegexp(
          AssertionError,
          re.compile(
              "Not equal to tolerance.*: Row 0, key a", re.DOTALL
          ),
      ):
          self.assertDataCloseOrEqual([{"a": 1}], [{"a": 2}])
  
file_path: transform/tensorflow_transform/test_case_test.py
imports: import re
  from tensorflow_transform import test_case
  import unittest
label_desc: Use image node_id 3 for calling the TftUnitTest obj's underlying member method code with example usage: obj.testAssertDataCloseOrEqual() without return types