code: def test_simple_kernel_shap_with_show_progress(
      self, mock_stderr
  ) -> None:
      net = BasicModel_MultiLayer()
      inp = torch.tensor([[20.0, 50.0, 30.0]], requires_grad=True)
  
      # test progress output for each batch size
      for bsz in (1, 2, 3):
          self._kernel_shap_test_assert(
              net,
              inp,
              [[76.66666, 196.66666, 116.66666]],
              perturbations_per_eval=(bsz,),
              n_samples=500,
              show_progress=True,
          )
          output = mock_stderr.getvalue()
  
          # to test if progress calculation aligns with the actual iteration
          # all perturbations_per_eval should reach progress of 100%
          assert (
              "Kernel Shap attribution: 100%" in output
          ), f"Error progress output: {repr(output)}"
  
          mock_stderr.seek(0)
          mock_stderr.truncate(0)
  
imports: import io
  import unittest
  import unittest.mock
  from typing import Any, Callable, List, Tuple, Union
  import torch
  from captum._utils.typing import BaselineType, TensorOrTupleOfTensorsGeneric
  from captum.attr._core.kernel_shap import KernelShap
  from tests.helpers.basic import assertTensorAlmostEqual, assertTensorTuplesAlmostEqual, BaseTest, set_all_random_seeds
  from tests.helpers.basic_models import BasicLinearModel, BasicModel_MultiLayer, BasicModel_MultiLayer_MultiInput
label_desc: Use image node_id 5 for calling the Test obj's underlying member method code with example usage: obj.test_simple_kernel_shap_with_show_progress(mock_stderr) without return types