6
votes

Comment augmenter SUDS.WebFault du code Python?

J'essaie d'élever un code de python. Le __ init __ méthode \ constructeur prend trois arguments __ init __ (auto, défaut, document) . La défaillance a défaillance.FaultCode et défaillance.Detail Membres \ Attributs \ Propriétés. Je ne pouvais pas découvrir quelle faute de classe n'appartient à aucun mateste ce que j'ai essayé. Comment puis-je élevonner l'exception de type STDS.WebFault à partir du code Python?

Merci d'avance.


1 commentaires

La réponse de Chrissy Gormley travaille pour moi. Si cela fonctionne pour vous, veuillez cocher le savoir.


3 Réponses :


6
votes

Vous ne savez pas exactement ce que vous demandez exactement, mais vous pouvez lancer une faute Web à l'aide de:

import suds

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


2 commentaires

Pas du tout ce qui est demandé.


C'est en fait la manière dont vous attrapez un Webfault , pas comment vous lancez / enlevez un.



0
votes

Webfault est uniquement destiné à être réellement soulevé lorsqu'un élément est renvoyé par le serveur Web. C'est donc probablement une mauvaise idée de l'élever vous-même.

Si vous souhaitez toujours, je commencerais à regarder le code où le cadre le soulève: https://github.com/unomena/suds/blob/4e90361e13fb3d74915fc798e0e/suds/bindings/binding.py#l182 - et travailler à l'arrière de là.


0 commentaires

4
votes

Webfault est défini dans SUDS .__ init __. py code> comme: xxx pré>

Par conséquent, pour élever une webfault avec un message significatif dont vous aurez besoin de passer un objet comme le premier param avec le message. Le document peut simplement être Aucun code> sauf si nécessaire. P>

import suds

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

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


1 commentaires

Grande réponse merci. Pour référence, je dois le faire dans un système simulé pour émuler une erreur de traitement de serveur générique.