2011-04-13 3 views
5

파이썬 코드에서 Suds.WebFault를 발생 시키려고합니다. __init__ 메서드 \ constructor는 세 개의 인수 __init__(self, fault, document)을 사용합니다. fault에는 fault.faultcode W fault.detail members \ attributes \ properties가 있습니다. 어떤 종류의 결함이 어떤 매트에 속하는지 알 수 없었습니다. 파이썬 코드에서 Suds.WebFault 유형 예외를 발생시키는 방법은 무엇입니까?파이썬 코드에서 Suds.WebFault를 발생시키는 방법은 무엇입니까?

미리 감사드립니다.

+0

chrissygormley의 답변이 저에게 효과적입니다. 그것이 당신을 위해 작동한다면, 체크 표시를하십시오. – paragbaxi

답변

6

확실하지 당신은 요구하고 있지만 사용하여 웹 오류를 던질 수 정확히 :

import suds 

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

전혀 물어 보는 것이 아닙니다. – Jon

+2

이것은 실제로 당신이 던지기/올리는 방법이 아니라'WebFault'를 잡는 방법입니다. –

0

WebFault이 만 <Fault> 요소가 웹 서버에 의해 반환 될 때 실제로 제기하기위한 것입니다. 따라서 자신을 키우는 것은 나쁜 생각 일 수 있습니다.

여전히 원한다면, 프레임 워크에서 코드를 올리는 코드를 살펴 보겠습니다 : https://github.com/unomena/suds/blob/4e90361e13fb3d74915eafc1f3a481400c798e0e/suds/bindings/binding.py#L182 - 거기에서 거꾸로 작업하십시오.

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 

따라서는 메시지와 함께 첫 번째 PARAM 같은 개체를 전달해야합니다 의미있는 메시지와 WebFault을 높이려면 :

2

WebFault는 다음과 같이 suds.__init__.py에 정의되어 있습니다. 필요한 경우를 제외하고 문서는 간단히 None이 될 수 있습니다.

import suds 

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

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

멋진 답변 감사드립니다. 참고로 일반 서버 처리 오류를 에뮬레이트하기 위해 mock 시스템에서이 작업을 수행해야합니다. –

+0

답변으로 표시해야합니다. – Sezen

관련 문제