2014-09-05 3 views
0

저는 Python을 사용하는 테스트 팀의 일원입니다. 이제 우리는 Python을 사용하여 SOAP 호출을 자동화하는 요구 사항을 갖게되었습니다. WSDL 파일이 있고 CSV에 테스트 데이터가 있습니다.Suds Python을 사용하여 wsdl 파일에서 SOAP xml 생성

특정 방법에 대해 CSV에서 데이터를 가져 와서이를 매개 변수로 서비스에 전달하고 호출을 트리거 한 다음 응답을 출력하고 싶습니다.

원했던 도움말은 특정 메소드에 대해 지정된 WSDL 파일에서 SOAP xml을 생성 할 수 있습니까? 그렇다면 어떻게 할 수 있습니까? CSV 파일을 테스트 할 WSDL 방식의 인수에 해당하는 열 머리글이있는 경우

+0

예, SOAP 클라이언트는 특정 호출에 대한 XML을 생성합니다. –

답변

0

, 당신은 쉽게 그렇게 할 수 있습니다

import csv 
import suds 

WSDL = 'http://some.wsdl.somewhere/' 
METHOD = 'theMethodToTest' 
CSVFN = '/some/csv/file.csv' 

client = suds.client.Client(WSDL) 

with open(CSVFN, 'rb') as f: 
    reader = csv.DictReader(f) 
    for kwargs in reader: 
     getattr(client.service, METHOD)(**kwargs) 

UPDATE 1

매핑 할 경우 CSV 플랫 파일 구조를 복잡한 구조에 매핑하면 CSV 헤더를 사용하여 매핑을 나타낼 수 있습니다.

dict에 매핑하여 SUDS 설명서에 설명 된대로 WSDL 메서드에 전달할 수 있습니다. ComplexArgumentsUsingDict. :-) ...

kwargs = { 
    'person': { 
     'name': {'first':'Elmer', 'last':'Fudd'}, 
     'age': 35, 
     'phone': [ 
      {'npa':202, 'nxx':555, 'number':1212}, 
     ] 
    } 
} 

가 그래도 난 당신을 제공 할 샘플 코드가 없습니다 : 변환 될 수

person.name.first,person.name.last,person.age,person.phone.0.npa,person.phone.0.nxx,person.phone.0.number 
"Elmer","Fudd",35,202,555,1212 

:

귀하의 CSV 헤더는 뭔가를 할 수

발생할 수있는 한 가지 문제는 형식 관련입니다.

person.name.first,person.name.last,person.age:int,person.phone.0.npa:int,person.phone.0.nxx:int,person.phone.0.number:int,married:bool 

또는 : 당신은

하나의 아이디어가 헤더의 유형을 표시하는 것입니다 ... 명시 적으로 CSV 파일 int로 (텍스트), 플로트, 부울에서 데이터를 변환 할 수 있습니다 저장하여 XML의 데이터 테스트 ...

+0

다음 오류가 발생합니다 : suds.WebFault : 서버에서 오류 발생 : '처리하는 동안 오류가 발생했습니다.' 전달한 값은 중첩 된 요소가있는 복합 데이터 형식입니다. –

관련 문제