code: def invoke(self, args, kwargs):
          
          simulation = kwargs.pop(self.__injkey)
          msg = simulation.get("msg")
          if msg is not None:
              assert msg.__class__ is suds.byte_str_class
              return self.send(_parse(msg))
          msg = self.method.binding.input.get_message(self.method, args, kwargs)
          log.debug("inject (simulated) send message:\n%s", msg)
          reply = simulation.get("reply")
          if reply is not None:
              assert reply.__class__ is suds.byte_str_class
              status = simulation.get("status")
              description = simulation.get("description")
              if description is None:
                  description = "injected reply"
              return self.process_reply(reply, status, description)
          raise Exception("reply or msg injection parameter expected")
docs: Invoke a specified web service method.
  
          Uses an injected SOAP request/response instead of a regularly
          constructed/received one.
  
          Depending on how the ``nosend`` & ``retxml`` options are set, may do
          one of the following:
            * Return a constructed web service operation request without sending
              it to the web service.
            * Invoke the web service operation and return its SOAP reply XML.
            * Invoke the web service operation, process its results and return
              the Python object representing the returned value.
  
          @param args: Positional arguments for the method invoked.
          @type args: list|tuple
          @param kwargs: Keyword arguments for the method invoked.
          @type kwargs: dict
          @return: SOAP request, SOAP reply or a web service return value.
          @rtype: L{RequestContext}|I{builtin}|I{subclass of} L{Object}|I{bytes}|
              I{None}