code: def test_add_batch(self):
      self.assertEqual(0, len(self.image_batches.data))
      self.image_batches.add_batch(
          "batch1", batch_properties={"k1": "v1", "k2": "v2"}
      )
      self.assertEqual(1, len(self.image_batches.data))
      self.assertDictEqual(
          {"k1": "v1", "k2": "v2", "images": {}},
          self.image_batches["batch1"],
      )
      self.image_batches.add_batch(
          "batch2", batch_properties={"k3": "v3"}
      )
      self.assertEqual(2, len(self.image_batches.data))
      self.assertDictEqual(
          {"k3": "v3", "images": {}}, self.image_batches["batch2"]
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import itertools
  import unittest
  from six import assertCountEqual
  from eval_lib import image_batches
  from eval_lib import submissions
  from eval_lib.tests import fake_cloud_client
label_desc: Use image node_id 2 for calling the ImageBatchesBaseTest obj's underlying member method code with example usage: obj.test_add_batch() without return types