code: def test_discrete_steps(self, step, step_kwargs):
      with pm.Model() as m:
          d1 = pm.Bernoulli("d1", p=0.5)
          d2 = pm.Bernoulli("d2", p=0.5)
  
          with pytensor.config.change_flags(
              mode=fast_unstable_sampling_mode
          ):
              assert [m.rvs_to_values[d1]] == step(
                  [d1], **step_kwargs
              ).vars
          assert {m.rvs_to_values[d1], m.rvs_to_values[d2]} == set(
              step([d1, d2], **step_kwargs).vars
          )
  
imports: import warnings
  import arviz
  import numpy
  import numpy.testing
  import pytensor
  import pytest
  import pymc
  from pymc.step_methods.metropolis import BinaryGibbsMetropolis, CategoricalGibbsMetropolis, DEMetropolis, DEMetropolisZ, Metropolis, MultivariateNormalProposal, NormalProposal
  from pymc.testing import fast_unstable_sampling_mode
  from tests import sampler_fixtures
  from tests.helpers import RVsAssignmentStepsTester, StepMethodTester
  from tests.models import mv_simple, mv_simple_discrete, simple_categorical
label_desc: Use image node_id 1 for calling the TestRVsAssignmentMetropolis obj's underlying member method code with example usage: obj.test_discrete_steps(step, step_kwargs) without return types