tfds.testing.run_in_graph_and_eager_modes

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

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.

For example, consider the following unittest:

class SomeTest(tfds.testing.TestCase):

  @tfds.testing.run_in_graph_and_eager_modes
  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__':
  tfds.testing.test_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.