code: def test_reduction_factor_no_default(self):
      model = self.get_model()
      model.eval()
      reduction_factor = {"2": 8, "4": 32}
      for adapter_config in [
          SeqBnConfig(reduction_factor=reduction_factor),
          DoubleSeqBnConfig(reduction_factor=reduction_factor),
      ]:
          with self.subTest(
              model_class=model.__class__.__name__,
              config=adapter_config.__class__.__name__,
          ):
              name = adapter_config.__class__.__name__
              with self.assertRaises(KeyError):
                  model.add_adapter(name, config=adapter_config)
  
imports: import copy
  import tempfile
  import torch
  import adapters
  from adapters import ADAPTER_CONFIG_MAP, ADAPTER_MODEL_MAPPING, AutoAdapterModel, BatchSplit, DoubleSeqBnConfig, DoubleSeqBnInvConfig, Fuse, InvertibleAdaptersMixin, InvertibleAdaptersWrapperMixin, MAMConfig, SeqBnConfig, SeqBnInvConfig
  from adapters.heads.language_modeling import CausalLMHead
  from transformers import MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING, CLIPConfig
  from transformers.testing_utils import require_torch, torch_device
  from .base import AdapterMethodBaseTestMixin, create_twin_models
label_desc: Use image node_id 9 for calling the BottleneckAdapterTestMixin obj's underlying member method code with example usage: obj.test_reduction_factor_no_default() without return types