我是使用Python的測試團隊的一員。現在我們需要使用Python自動化SOAP調用。我有一個WSDL文件,我們有一些CSV格式的測試數據。使用Suds Python從wsdl文件生成SOAP xml
因此,對於任何特定的方法,我想從CSV中獲取數據並將其作爲參數傳遞給服務並觸發調用,然後輸出響應。
我想要的幫助是可以從給定的WSDL文件爲特定方法生成SOAP xml嗎?如果是這樣,我該怎麼做?
我是使用Python的測試團隊的一員。現在我們需要使用Python自動化SOAP調用。我有一個WSDL文件,我們有一些CSV格式的測試數據。使用Suds Python從wsdl文件生成SOAP xml
因此,對於任何特定的方法,我想從CSV中獲取數據並將其作爲參數傳遞給服務並觸發調用,然後輸出響應。
我想要的幫助是可以從給定的WSDL文件爲特定方法生成SOAP xml嗎?如果是這樣,我該怎麼做?
如果您的CSV文件與您要測試的WSDL方法的參數列標題,您可以輕鬆地做到這一點:
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)
更新1
如果你想映射一個CSV 平板文件結構複雜到一個複雜的結構,那麼你可以使用CSV標頭來指示一個映射。
您可以映射到字典並將其傳遞給SUDS文檔中描述的WSDL方法:ComplexArgumentsUsingDict。
您的CSV頭可能是這樣的:
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
將被轉換爲:
kwargs = {
'person': {
'name': {'first':'Elmer', 'last':'Fudd'},
'age': 35,
'phone': [
{'npa':202, 'nxx':555, 'number':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
或者保存你的用XML測試數據...
我收到以下錯誤:suds.WebFault:服務器發生故障:'處理時發生故障。' 我傳遞的值是具有一些嵌套元素的複雜數據類型。 – 2014-09-05 16:17:34
是的,SOAP客戶端爲特定的調用產生XML。 – 2014-09-05 14:34:08