RobotFrameWork WebService Soap接口測試 (一)


     在做完基於http協議的接口測試之后,開始弄soap協議了,之前有過開發java webservice自動化框架的經驗,所以我想着應該並不會很難。對於webservice的簡介,服務器端和客戶端的開發的簡單例子前面的隨筆有分享過,就不再次重復。然后在網上隨便搜了下,似乎RobotFrameWork並沒有提供基於soap協議的庫,於是自己用python做了個簡單的模塊。

     服務器端是用java開發的,實際上提供了wsdl文件,跟什么語言開發的不會影響客戶端的調用。用python做soap的客戶端,用到的是suds庫,首先當然是安裝suds了,執行pip install suds或者到http://pypi.python.org/pypi/suds下載壓縮包,安裝成功后,可以在官網上搜索它的相關文檔介紹https://fedorahosted.org/suds/wiki/Documentation,然后可以開心的進行客戶端開發了。

    

 
         
# -*- coding: cp936 -*-
#導入包from suds.client import Client
from suds.client import Client


#創建客戶端,與服務器端進行連接
def webservice():

url= 'http://192.168.5.45:8888/bossApi/bossws/wsService?wsdl'
client = Client(url)
#print client 能得到服務器提供的遠程調用的方法
print client
return client

if __name__=='__main__':
ws = webservice()
#getkeyCode是服務器端的一個方法,后面的三個是遠程調用的方法
print ws.service.getkeyCode('daigg','e10adc3949ba59abbe56e057f20f883e','3025495AEE146DA3864AB81BAAF79A3E')
 

     運行后,結果如下:

 第一個紅框內返回的是可以遠程調用的所有方法,第二個紅框是具體一個接口測試后返回的數據       

        介於是做demo演示,於是就只做了一個py文件進行調用,就做一個關鍵字吧。然后關鍵字的參數就是url,遠程調用的方法,方法內的參數。而且方法名傳遞進來后,如果放在.的后面(ws.service.getkeyCode),ws.service.method是無效的,method已經不當字符串處理了,只能當函數名處理(js支持,一般語言都不支持),於是需要自己做個簡單的映射,寫完如下:

    

# -*- coding: cp936 -*-
from suds.client import Client

def webService(url,test_method,rootuname,pwd_md5,keyCode):

    client = Client(url)
    dic_metode={'getkeyCode':client.service.getkeyCode}
    method_test = dic_metode.get(test_method)
    return method_test(rootuname, pwd_md5, keyCode)

        這個就可以直接在RF內導入,做一個接口的測試了(暫時只能證明可行,易用性是欠缺,但相比java之前寫的代碼,已經簡潔了無數倍,java的稍晚復雜點,嘿嘿),在RF內導入XML(內置庫)就可以對返回的標准xml數據進行解析,測試腳本和運行結果如下所示:

    


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM