code: def test_update_attribute(self):
      rs = np.random.RandomState(1)
      num_dims = 5
      num_inducing = 2
      gp_model, _ = generate_lgpga(
          self.kernel, n_dimensions=num_dims, num_inducing=2, rs=rs
      )
      self.assertTrue(gp_model.num_inducing_points, num_inducing)
      num_inducing = 4
  
      gp_model.update_attribute(num_inducing_points=num_inducing)
      self.assertTrue(gp_model.num_inducing_points, num_inducing)
  
      with self.assertRaises(AttributeError):
          gp_model.update_attribute(unknown_param=1)
  
imports: from typing import Tuple
  import unittest.mock
  import gpytorch
  import numpy
  import pyro
  import torch
  from gpytorch.constraints.constraints import Interval
  from gpytorch.likelihoods.gaussian_likelihood import GaussianLikelihood
  from gpytorch.priors import HorseshoePrior
  from smac.configspace import ConfigurationSpace, UniformFloatHyperparameter
  from smac.model.gaussian_process.augmented_local_gaussian_process import AugmentedLocalGaussianProcess, GloballyAugmentedLocalGaussianProcess
  from smac.model.gaussian_process.gpytorch_gaussian_process import ExactGaussianProcessModel
  from ._test_boing_kernel import generate_kernel, generate_test_data
  from ._test_gp_gpytorch import TestGPGPyTorch
label_desc: Use image node_id 3 for calling the TestLGPGA obj's underlying member method code with example usage: obj.test_update_attribute() without return types