code: def test_dtype_error(self):
      with pytest.raises(pm.exceptions.DtypeError) as exinfo:
          raise pm.exceptions.DtypeError("Just the message.")
      assert "Just" in exinfo.value.args[0]
  
      with pytest.raises(pm.exceptions.DtypeError) as exinfo:
          raise pm.exceptions.DtypeError("With types.", actual=str)
      assert "str" in exinfo.value.args[0]
  
      with pytest.raises(pm.exceptions.DtypeError) as exinfo:
          raise pm.exceptions.DtypeError("With types.", expected=float)
      assert "float" in exinfo.value.args[0]
  
      with pytest.raises(pm.exceptions.DtypeError) as exinfo:
          raise pm.exceptions.DtypeError(
              "With types.", actual=int, expected=str
          )
      assert (
          "int" in exinfo.value.args[0]
          and "str" in exinfo.value.args[0]
      )
  
imports: import re
  import arviz
  import numpy
  import pytest
  import xarray
  from cachetools import cached
  import pymc
  from pymc.distributions.transforms import Transform
  from pymc.util import UNSET, _get_seeds_per_chain, dataset_to_point_list, drop_warning_stat, get_value_vars_from_user_vars, hash_key, hashable, locally_cachedmethod
label_desc: Use image node_id 2 for calling the TestExceptions obj's underlying member method code with example usage: obj.test_dtype_error() without return types