code: def testForEach_LoopVariableNotUsed_Disallowed(self):
      with self.subTest("Not using at all"):
          with self.assertRaises(ValueError):
              a = A()
              with for_each.ForEach(
                  a.outputs["aa"]
              ) as aa:  # pylint: disable=unused-variable
                  b = (
                      B()
                  )  # aa is not used. # pylint: disable=unused-variable
  
      with self.subTest("Source channel is not a loop variable."):
          with self.assertRaises(ValueError):
              a = A()
              with for_each.ForEach(a.outputs["aa"]) as aa:
                  b = B(aa=a.outputs["aa"])
  
imports: import unittest
  import tensorflow
  from tfx import types
  from tfx.dsl.components.base import base_node
  from tfx.dsl.context_managers import dsl_context_registry
  from tfx.dsl.control_flow import for_each
  from tfx.orchestration import pipeline
  from tfx.types import resolved_channel
  from tfx.utils import test_case_utils
label_desc: Use image node_id 3 for calling the ForEachTest obj's underlying member method code with example usage: obj.testForEach_LoopVariableNotUsed_Disallowed() without return types