簡體   English   中英

使用Suds Python從wsdl文件生成SOAP xml

[英]Generate SOAP xml from wsdl file using Suds Python

我是使用Python的測試團隊的一員。 現在我們有了使用Python自動執行SOAP調用的要求。 我有一個WSDL文件,並且我們有一些CSV測試數據。

因此,對於任何特定的方法,我都希望從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標頭指示映射。

您可以映射到dict,然后將其傳遞給WSDL方法,如SUDS文檔: 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文件(文本)顯式轉換為int,float,bool ...

一種想法是在標題中指出類型:

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 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM