2011-04-13 20 views
5

Estoy tratando de generar un Suds.WebFault del código python. El método __init__ method \ constructor toma tres argumentos __init__(self, fault, document). El error tiene fault.faultcode y fault.detail members \ attributes \ properties. No pude averiguar qué clase de falla pertenece a no matte lo que probé. ¿Cómo elevo la excepción de tipo Suds.WebFault del código python?Cómo subir Suds.WebFault desde el código python?

Gracias de antemano.

+0

La respuesta de chrissygormley me funciona. Si le funciona, márquelo. – paragbaxi

Respuesta

6

No está seguro de qué es exactamente lo que está pidiendo, pero se puede tirar un fallo web usando:

import suds 

try: 
    client.service.Method(parameter) 
except suds.WebFault, e: 
    print e 
+1

No es para nada lo que se solicita. – Jon

+2

De hecho, esta es la forma de atrapar un 'WebFault', no cómo se lanza/levanta uno. –

2

WebFault se define en suds.__init__.py como:

class WebFault(Exception): 
    def __init__(self, fault, document): 
     if hasattr(fault, 'faultstring'): 
      Exception.__init__(self, u"Server raised fault: '%s'" % 
       fault.faultstring) 
     self.fault = fault 
     self.document = document 

tanto para criar a un WebFault con un mensaje significativo que tendrá que pasar un objeto como el primer parámetro con el mensaje. El documento puede simplemente ser None a menos que se requiera.

import suds 

class Fault(object): 
    faultstring = 'my error message' 

raise suds.WebFault(Fault(), document=None) 
+1

Gran respuesta gracias. Como referencia, necesito hacer esto en un sistema simulado para emular un error genérico de procesamiento del servidor. –

+0

Esto debe marcarse como respuesta. – Sezen

Cuestiones relacionadas