2010-01-14 73 views
6

有誰知道一個很好的SUDS教程。我正在嘗試運行WSDL文件的測試,並且無法找到有關如何執行此操作的任何信息。 SUDS與SOAPy大不相同,有人會推薦它對存儲在WSDL文件中的函數執行冒煙測試。使用SUDS測試WSDL

我讀過Python 2.6+不再支持SOAPAy。這是真的?

我有我已經進入了一個WSDL文件:

from suds.client import Client 

client = Client('http://10.51.54.50/ptz.wsdl') 

client.service.GetNode() 

我得到這個錯誤:

in open 
    response = self._open(req, data) 
    File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 407, in _open 
    '_open', req) 
    File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 367, in _call_chain 
    result = func(*args) 
    File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1146, in http_open 
    return self.do_open(httplib.HTTPConnection, req) 
    File "/home/build/workspace/downloads/Python-2.6.4/Lib/urllib2.py", line 1121, in do_open 
    raise URLError(err) 
urllib2.URLError: <urlopen error [Errno 111] Connection refused> 

有誰知道爲什麼發生這種情況?

我可以通過我的瀏覽器連接到這個文件。我已經安裝了所有的泡沫包裝。是否需要其他設置?

+0

'的urlopen錯誤[錯誤111]連接refused'聽起來像你不能訪問的IP。 – 2010-01-14 12:00:33

+0

不,不需要額外的設置。 – 2010-01-14 12:47:58

+0

是否能夠開發基於泡沫的測試框架?如果是這樣,你的結果是否有junit類型的XML格式? – kamal

回答

15

肥皂水的使用非常簡單。

from suds.client import Client 

client = Client("http://example.com/foo.wsdl") 
client.service.someMethod(someParameter) 

someMethod是在WSDL中描述的方法的名稱。

2

連接被拒絕表示服務器不在那裏。你能在瀏覽器中或通過curl訪問http://10.51.54.50/ptz.wsdl嗎?如果沒有,首先讓SOAP服務先運行然後重試。

2

在我的情況下,這是一個愚蠢的錯誤(就像任何其他錯誤)。

,我已經用於初始化我服務的URL是像

Uri httpUri = new Uri("http://localhost:8000/CalculatorService"); 

我可以在同一臺機器作爲服務上運行的Python客戶端訪問該服務。我可以從瀏覽器瀏覽本地和遠程機器上的wsdl。但是,當我試圖從遠程機器訪問此服務時,出現連接拒絕錯誤。奇怪的是,在wireshark中,我可以看到服務將wsdl發送回遠程客戶端。 浪費了幾個小時後,我啓用了日誌記錄

logging.getLogger('suds.client').setLevel(logging.DEBUG) 
logging.getLogger('suds.transport').setLevel(logging.DEBUG) 
logging.getLogger('suds.xsd.schema').setLevel(logging.DEBUG) 
logging.getLogger('suds.wsdl').setLevel(logging.DEBUG) 

日誌表明,泡沫下載從服務器的WSDL,但之後,它試圖連接到本地主機:8000。並解釋了連接拒絕錯誤。我只是改變了URI的WCF服務器上

Uri httpUri = new Uri("http://192.168.0.1:8000/CalculatorService"); 

這解決了我的問題