code: def test_simple_input_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._occlusion_test_assert(
              net,
              inp,
              [[80.0, 200.0, 120.0]],
              perturbations_per_eval=(bsz,),
              sliding_window_shapes=((1,)),
              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 (
              "Occlusion 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, Tuple, Union
  import torch
  from captum._utils.typing import BaselineType, TargetType, TensorLikeList, TensorOrTupleOfTensorsGeneric
  from captum.attr._core.occlusion import Occlusion
  from tests.helpers.basic import assertTensorAlmostEqual, BaseTest
  from tests.helpers.basic_models import BasicModel3, BasicModel_ConvNet_One_Conv, BasicModel_MultiLayer, BasicModel_MultiLayer_MultiInput
  from torch import Tensor
label_desc: Use image node_id 15 for calling the Test obj's underlying member method code with example usage: obj.test_simple_input_with_show_progress(mock_stderr) without return types