code: def step_all(self):
      # make sure class attributes are available in all steps
      # through joins etc
      assert_equals("this is a constant", self.str_const)
      assert_equals(123, self.int_const)
      # obj_const is mutable. Not much that can be done about it
      assert_equals([], self.obj_const)
  
      assert_equals(456, self.int_param)
      assert_equals("foobar", self.str_param)
  
      # make sure class variables are not listed as parameters
      from metaflow import current
  
      assert_equals(
          {"int_param", "str_param"}, set(current.parameter_names)
      )
  
      try:
          self.int_param = 5
      except AttributeError:
          pass
      else:
          raise Exception(
              "It shouldn't be possible to modify parameters"
          )
  
      try:
          self.int_const = 122
      except AttributeError:
          pass
      else:
          raise Exception(
              "It shouldn't be possible to modify constants"
          )
  
imports: from metaflow_test import MetaflowTest, ExpectationFailed, steps
label_desc: Use image node_id 1 for calling the ConstantsTest obj's underlying member method code with example usage: obj.step_all() without return types