RobotFrameWork WebService Soap接口測試 (一)

     在作完基於http協議的接口測試以後,開始弄soap協議了,以前有過開發java webservice自動化框架的經驗,因此我想着應該並不會很難。對於webservice的簡介,服務器端和客戶端的開發的簡單例子前面的隨筆有分享過,就再也不次重複。而後在網上隨便搜了下,彷佛RobotFrameWork並無提供基於soap協議的庫,因而本身用python作了個簡單的模塊。java

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

    

 
 
# -*- 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')
 

     運行後,結果以下:web

 第一個紅框內返回的是能夠遠程調用的全部方法,第二個紅框是具體一個接口測試後返回的數據       服務器

        介因而作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數據進行解析,測試腳本和運行結果以下所示:函數

相關文章
相關標籤/搜索