code: def test_shear_y(dtype):
      image = np.random.randint(low=0, high=255, size=(4, 4, 3)).astype(
          dtype.as_numpy_dtype
      )
      color = tf.constant([255, 0, 255], tf.int32)
      level = tf.random.uniform(shape=(), minval=0, maxval=1)
  
      tf_image = tf.constant(image)
      sheared_img = transform_ops.shear_y(
          image=tf_image, level=level, replace=color
      )
      transform_matrix = transform.AffineTransform(
          np.array([[1, 0, 0], [level.numpy(), 1, 0], [0, 0, 1]])
      )
      if dtype == tf.uint8:
          # uint8 can't represent cval=-1, so we use int32 instead
          image = image.astype(np.int32)
      expected_img = transform.warp(
          image, transform_matrix, order=0, cval=-1, preserve_range=True
      )
  
      mask = np.where(expected_img == -1)
      expected_img[mask[0], mask[1], :] = color
  
      test_utils.assert_allclose_according_to_type(
          sheared_img.numpy(), expected_img
      )
  
imports: import pytest
  import numpy
  import tensorflow
  from skimage import transform
  from tensorflow_addons.image import transform_ops
  from tensorflow_addons.utils import test_utils
label_desc: Use image node_id 22 for calling a global function with example usage: test_shear_y(dtype) without return types