class_docstr: Run a set of generic tests to verify that self.func acts like a
  reduction operation.
  
  Specifically, this class checks axis=... and keepdims=... parameters.
  To check the out=... parameter, see the _GenericHasOutTestMixin class below.
  
  To use: subclass, define self.func and self.allowed_axes.
code: def test_keepdims_generic(self, axis, func):
      if func in fails_axes_tuples:
          raise SkipTest(f"{func.__name__} does not allow tuple axis.")
  
      a = np.arange(2 * 3 * 4).reshape((2, 3, 4))
      with_keepdims = func(a, axis, keepdims=True)
      expanded = np.expand_dims(func(a, axis=axis), axis=axis)
      assert_array_equal(with_keepdims, expanded)
  
imports: from unittest import skipIf, SkipTest
  import numpy
  import pytest
  from pytest import raises
  from torch.testing._internal.common_utils import instantiate_parametrized_tests, parametrize, run_tests, TEST_WITH_TORCHDYNAMO, TestCase, xpassIfTorchDynamo
label_desc: Use image node_id 5 for calling the TestGenericReductions obj's underlying member method code with example usage: obj.test_keepdims_generic(axis, func) without return types