code: def reduce_op_test(
      self, op_name, op_ref, in_data, in_names, num_reduce_dims, device
  ):
      op = core.CreateOperator(
          op_name, in_names, ["outputs"], num_reduce_dim=num_reduce_dims
      )
  
      self.assertReferenceChecks(
          device_option=device, op=op, inputs=in_data, reference=op_ref
      )
  
      self.assertGradientChecks(
          device, op, in_data, 0, [0], stepsize=1e-2, threshold=1e-2
      )
  
imports: from caffe2.python import core, workspace
  from hypothesis import given, settings
  import caffe2.python.hypothesis_test_util
  import caffe2.python.serialized_test.serialized_test_util
  import hypothesis.strategies
  import numpy
  import itertools
label_desc: Use image node_id 3 for calling the TestReduceFrontReductions obj's underlying member method code with example usage: obj.reduce_op_test(op_name, op_ref, in_data, in_names, num_reduce_dims, device) without return types