WebService自動化-WSDL調用
在做自動化測試的過程中,有時候需要測試一個業務流程特定的部分, 這個特定部分可能是接口,它往往需要依賴前期產生的數據輸出作為輸入,這個時候,重新跑一遍前邊流程來獲得需要的數據顯然不合理, 那麼利用後端開發發佈出來的web service來直接生成所需數據就顯得尤為便捷, 今天我們就來看如何利用suds調用web service。
Suds is a lightweight SOAP python client for consuming Web Services.
The suds Client class provides a consolidated API for consuming web services. The object contains (2) sub-namespaces:
service
The service namespace provides a proxy for the consumed service. This object is used to invoke operations (methods) provided by the service endpoint.
factory
The factory namespace provides a factory that may be used to create instances of objects and types defined in the WSDL.
suds Client 是作為一個API來消費提供的web services, 它有兩個子命名空間:
Service :對象用來調用被消費的web service提供的方法。
Factory:提供一個工廠用來生成一個定義在WSDL的對象或方法的實例。
簡單來説就是service用來直接調用web service裏的方法,factory用來生成一個web service對象實例。
我們用一段代碼來説明:
from nt import Client
class WebServices(object):
WSDL_ADDRESS = "http://*/services/*/
def __init__(self):
_service = Client(_ADDRESS)
print _service
def is_class_booked(self, class_id, member_id):
return _assBooked(class_id, member_id)["ClassBooked"]
def cancel_clas(self, class_id, member_id):
parameter = _te("CancelClass")
print parameter
print dir(parameter)
s_id = class_id
er_id = member_id
elBy = 'T'
elReason = 'test'
return _elClass(m)
if __name__ == '__main__':
web_service_class = WebServices()
print web_service__class_booked('315983', '23540202')
print web_service_el_clas('315983', '23540202')
以上代碼裏:
WSDL_ADRESS:是我們提供的web service的地址。
__init__方法: 實現了suds client的生成, client的用法如下:
from nt import Client
url = 'http://*.?wsdl'
client = Client(url)
is_class_booked 方法:使用了client的service這個命名空間,即直接調用web service 的可用方法。那麼如何知道哪個方法如何調用呢?
參考代碼裏__init__方法的print語句,打印出來了所有可用的方法和類型, print的打印結果片段如下:
Suds ( ) version: 0.4 GA build: R699-20100913
Service ( StudentPrivateLessonService ) tns=""
Prefixes (9)
ns0 = "iceParams"
ns1 = "entPrivateLesson"
*
ns8 = ""
Ports (1):
(BasicHttpBinding_IStudentPrivateLessonService)
Methods (18):
*
CancelClass(ns1:CancelParameter param, )
*
IsClassBooked(xs:int class_id, xs:int member_id, )
*
Types (47):
ns4:ArrayOfBatchCancelDetail
ns4:ArrayOfBookablePLClass
ns4:ArrayOfBookedPLClass
*
從打印結果可以看出,IsClassBooked方法可以直接調用,它需要2個參數,類型為int型。
Cancel_class方法:利用了 client的factory這個命名空間。
parameter = _te("CancelClass")
創建了Cancel Class這個方法的一個實例,然後通過 print parameter,可以看出這個函數的參數組成:
suds_inpect.png
它是一個字典,字典的m的值又是一個字典,故我們要調用這個方法時下需要用s_id 這樣的方式來引用。
下圖是整段代碼的運行結果:
證明成功,我們再去DB裏查下結果:
可以看出,有一條心的記錄添加出來。
以上,只要給出WSDL的地址,導入suds,通過Client, service, factory這3個類就可以實現web services的自動化調用,是不是很簡單?
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
win2008 ASP顯示500內部錯誤不能顯示詳細錯誤的解決方法
在win2008系統中,有用户遇到這樣的情況:網站後台顯示500內部錯誤,但是卻無法打開詳細的錯誤信息。無法查看詳細的錯誤信息,用户就不能根據具體問題來解決了,這是一件很麻煩的事情。其實用户可以通過修改win2008系統中的IIS設置來顯示這個詳細的錯誤信息。一、造成50...
-
asp.net 操作INI文件讀寫類實例代碼
操作INI文件讀寫類實例代碼複製代碼代碼如下:usingSystem;usingropServices;using;using;namespaceCommon{//////INI文件讀寫類。///publicclassINIFile{publicstringpath;publicINIFile(stringINIPath){path=INIPath;}[DllImport("kernel32")]privatestaticex...
-
網頁設計黃金配色原則是什麼
身為網頁設計新手的你,是不是還在糾結於你製作的網頁找不到一組完美的配色方案?在本教程中我們將與你分享6條肯定會火,並且“錯不了”的指導方針,你可以按照這些原則把握最基本的色彩規律。現在我們分享的這些原則都不是規則,你會在你的職業生涯中創造出更多的配色...
相關文章
- Java如何調用WebService
- JavaScript在Android的WebView中parseInt函數轉換不正確
- C#開發和調用Web Service實例
- Perseverance will make you successful英語作文
- Windows系統服務器技術SQLServer輔導資料
- 學習Dreamweaver的CSS網頁佈局ul和li
- Windows系統裏的SQLServer輔導資料
- WebSphere MQ Solution Designer認證考試
- 英語閲讀:TheTwelveDancingPrincesses
- j2ee培訓:如何構建RESTful Web Service