code: def testRunInfoObserver(self):
      env = driver_test_utils.PyEnvironmentMock()
      policy = driver_test_utils.PyPolicyMock(
          env.time_step_spec(), env.action_spec()
      )
      infos = []
      driver = py_driver.PyDriver(
          env,
          policy,
          observers=[],
          transition_observers=[],
          info_observers=[infos.append],
          max_steps=2,
      )
      initial_time_step = env.reset()
      initial_policy_state = policy.get_initial_state()
      driver.run(initial_time_step, initial_policy_state)
      self.assertEqual(infos, [{"mock": 1}, {"mock": 1}])
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  from absl.testing import parameterized
  import numpy
  import tensorflow
  from tf_agents.drivers import py_driver
  from tf_agents.drivers import test_utils
  from tf_agents.environments import batched_py_environment
  from tf_agents.trajectories import trajectory
label_desc: Use image node_id 4 for calling the PyDriverTest obj's underlying member method code with example usage: obj.testRunInfoObserver() without return types