Execute the decorated test in both graph mode and eager mode.


Defined in testing/

This function returns a decorator intended to be applied to test methods in a test_case.TestCase class. Doing so will cause the contents of the test method to be executed twice - once in graph mode, and once with eager execution enabled. This allows unittests to confirm the equivalence between eager and graph execution.

NOTE: This decorator can only be used when executing eagerly in the outer scope.

For example, consider the following unittest:


class SomeTest(testing.TestCase):

  def test_foo(self):
    x = tf.constant([1, 2])
    y = tf.constant([3, 4])
    z = tf.add(x, y)
    self.assertAllEqual([4, 6], self.evaluate(z))

if __name__ == "__main__":

This test validates that tf.add() has the same behavior when computed with eager execution enabled as it does when constructing a TensorFlow graph and executing the z tensor with a session.


  • func: function to be annotated. If func is None, this method returns a decorator the can be applied to a function. If func is not None this returns the decorator applied to func.
  • config: An optional config_pb2.ConfigProto to use to configure the session when executing graphs.
  • use_gpu: If True, attempt to run as many operations as possible on GPU.


Returns a decorator that will run the decorated test method twice: once by constructing and executing a graph in a session and once with eager execution enabled.