code: def test_putmask_differnt_dtypes_raises(self, a_dtype, val_dtype):
      shape = (2, 3)
      for xp in (numpy, cupy):
          a = testing.shaped_random(shape, xp, dtype=a_dtype)
          mask = testing.shaped_random(shape, xp, dtype=numpy.bool_)
          values = testing.shaped_random((3,), xp, dtype=val_dtype)
          if not numpy.can_cast(val_dtype, a_dtype):
              with pytest.raises(TypeError):
                  xp.putmask(a, mask, values)
  
imports: import unittest
  import numpy
  import pytest
  import cupy
  from cupy import testing
label_desc: Use image node_id 1 for calling the TestPutmaskDifferentDtypes obj's underlying member method code with example usage: obj.test_putmask_differnt_dtypes_raises(a_dtype, val_dtype) without return types