code: def test_update_interval_from_config(self):
      # test a config which specifies an update interval
      config = {"update_interval": "epoch"}
      self.assertEqual(
          UpdateInterval.from_config(config, UpdateInterval.STEP),
          UpdateInterval.EPOCH,
      )
      # test a config which doesn't specify an update interval
      config = {}
      self.assertEqual(
          UpdateInterval.from_config(config, UpdateInterval.STEP),
          UpdateInterval.STEP,
      )
      # test a config with an invalid update interval
      config = {"update_interval": "invalid"}
      with self.assertRaises(Exception):
          UpdateInterval.from_config(config, UpdateInterval.EPOCH)
  
imports: import unittest
  from unittest.mock import Mock
  from classy_vision.dataset import build_dataset
  from classy_vision.hooks import ClassyHook
  from classy_vision.losses import build_loss
  from classy_vision.models import build_model
  from classy_vision.optim import build_optimizer, build_optimizer_schedulers
  from classy_vision.optim.param_scheduler import ClassyParamScheduler, register_param_scheduler, UpdateInterval
  from classy_vision.tasks import ClassificationTask, ClassyTask
  from classy_vision.trainer import LocalTrainer
label_desc: Use image node_id 8 for calling the TestParamSchedulerIntegration obj's underlying member method code with example usage: obj.test_update_interval_from_config() without return types