code: def testSpanDrivenEvaluatorInputs_InvalidInputDict_RaisesInvalidArgument(
      self,
  ):
      with self.assertRaises(exceptions.InvalidArgument):
          # Invalid artifact types.
          input_dict = {
              ops_utils.MODEL_KEY: self.examples,
              ops_utils.EXAMPLES_KEY: self.models,
          }
          self._run_span_driven_evaluator(input_dict)
  
          # Invalid dict keys.
          input_dict = {
              ops_utils.EXAMPLES_KEY: self.examples,
              ops_utils.MODEL_KEY: self.models,
              ops_utils.MODEL_PUSH_KEY: self.models,
          }
          self._run_span_driven_evaluator(input_dict)
  
          # Invalid and missing dict keys.
          input_dict = {
              ops_utils.EXAMPLES_KEY: self.examples,
              ops_utils.MODEL_PUSH_KEY: self.models,
          }
          self._run_span_driven_evaluator(input_dict)
  
          # Input dict only contains "model" and is missing "examples" key.
          input_dict = {ops_utils.MODEL_KEY: self.models}
          self._run_span_driven_evaluator(input_dict)
  
imports: from typing import List, Optional
  import tensorflow
  from tfx import types
  from tfx.dsl.input_resolution.ops import ops
  from tfx.dsl.input_resolution.ops import ops_utils
  from tfx.dsl.input_resolution.ops import test_utils
  from tfx.orchestration.portable.input_resolution import exceptions
label_desc: Use image node_id 5 for calling the SpanDrivenEvaluatorInputsOpTest obj's underlying member method code with example usage: obj.testSpanDrivenEvaluatorInputs_InvalidInputDict_RaisesInvalidArgument() without return types