code: def testEvaluateWithNonDefaultDebugOp(self):
      dump = test.mock.MagicMock()
  
      def fake_get_tensors(
          node_name, output_slot, debug_op, device_name=None
      ):
          del device_name  # Unused.
          if (
              node_name == "a"
              and output_slot == 0
              and debug_op == "DebugIdentity"
          ):
              return [np.array([[-1.0], [1.0]])]
          elif (
              node_name == "a"
              and output_slot == 0
              and debug_op == "DebugFoo"
          ):
              return [np.array([[-2.0, 2.0]])]
  
      with test.mock.patch.object(
          dump, "get_tensors", side_effect=fake_get_tensors
      ):
          ev = evaluator.ExpressionEvaluator(dump)
          self.assertAllClose(
              [[4.0]],
              ev.evaluate(
                  "np.matmul(`a:0:DebugFoo`, `a:0:DebugIdentity`)"
              ),
          )
  
imports: import numpy
  from tensorflow.python.debug.cli import evaluator
  from tensorflow.python.debug.lib import debug_data
  from tensorflow.python.framework import test_util
  from tensorflow.python.platform import test
label_desc: Use image node_id 5 for calling the EvaluatorTest obj's underlying member method code with example usage: obj.testEvaluateWithNonDefaultDebugOp() and returns: list, list