|
在做完基于http協(xié)議的接口測(cè)試之后,開(kāi)始弄soap協(xié)議了,之前有過(guò)開(kāi)發(fā)java webservice自動(dòng)化框架的經(jīng)驗(yàn),所以我想著應(yīng)該并不會(huì)很難。對(duì)于webservice的簡(jiǎn)介,服務(wù)器端和客戶端的開(kāi)發(fā)的簡(jiǎn)單例子前面的隨筆有分享過(guò),就不再次重復(fù)。然后在網(wǎng)上隨便搜了下,似乎RobotFrameWork并沒(méi)有提供基于soap協(xié)議的庫(kù),于是自己用python做了個(gè)簡(jiǎn)單的模塊。 服務(wù)器端是用java開(kāi)發(fā)的,實(shí)際上提供了wsdl文件,跟什么語(yǔ)言開(kāi)發(fā)的不會(huì)影響客戶端的調(diào)用。用python做soap的客戶端,用到的是suds庫(kù),首先當(dāng)然是安裝suds了,執(zhí)行pip install suds或者到http://pypi./pypi/suds下載壓縮包,安裝成功后,可以在官網(wǎng)上搜索它的相關(guān)文檔介紹https:///suds/wiki/Documentation,然后可以開(kāi)心的進(jìn)行客戶端開(kāi)發(fā)了。
# -*- coding: cp936 -*- 運(yùn)行后,結(jié)果如下:
第一個(gè)紅框內(nèi)返回的是可以遠(yuǎn)程調(diào)用的所有方法,第二個(gè)紅框是具體一個(gè)接口測(cè)試后返回的數(shù)據(jù) 介于是做demo演示,于是就只做了一個(gè)py文件進(jìn)行調(diào)用,就做一個(gè)關(guān)鍵字吧。然后關(guān)鍵字的參數(shù)就是url,遠(yuǎn)程調(diào)用的方法,方法內(nèi)的參數(shù)。而且方法名傳遞進(jìn)來(lái)后,如果放在.的后面(ws.service.getkeyCode),ws.service.method是無(wú)效的,method已經(jīng)不當(dāng)字符串處理了,只能當(dāng)函數(shù)名處理(js支持,一般語(yǔ)言都不支持),于是需要自己做個(gè)簡(jiǎn)單的映射,寫(xiě)完如下:
# -*- 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) 這個(gè)就可以直接在RF內(nèi)導(dǎo)入,做一個(gè)接口的測(cè)試了(暫時(shí)只能證明可行,易用性是欠缺,但相比java之前寫(xiě)的代碼,已經(jīng)簡(jiǎn)潔了無(wú)數(shù)倍,java的稍晚復(fù)雜點(diǎn),嘿嘿),在RF內(nèi)導(dǎo)入XML(內(nèi)置庫(kù))就可以對(duì)返回的標(biāo)準(zhǔn)xml數(shù)據(jù)進(jìn)行解析,測(cè)試腳本和運(yùn)行結(jié)果如下所示:
|
|
|
來(lái)自: 小豬窩969 > 《robot framework》