1. 程式人生 > 實用技巧 >Python 如何測試WebService介面

Python 如何測試WebService介面

歡迎關注【無量測試之道】公眾號,回覆【領取資源】,
Python程式設計學習資源乾貨、
Python+Appium框架APP的UI自動化、
Python+Selenium框架Web的UI自動化、
Python+Unittest框架API自動化、

資源和程式碼 免費送啦~
文章下方有公眾號二維碼,可直接微信掃一掃關注即可。

WebService是什麼

簡單的說WebService是一個SOAP(面向服務的程式設計)的架構,它是不依賴於語言,不依賴於平臺,可以實現不同的語言(通過 xml 描述)間的相互呼叫,通過Internet進行基於Http協議的網路應用間的互動。通過SOAP在Web上提供的軟體服務,使用WSDL檔案進行說明,並通過UDDI進行註冊。(概念性的東西大家可以自行搜尋補充)

測試環境準備

python2.7 + httplib 內建庫

資料準備
這裡就定義了兩個case:
case1是一個正向case, 根據正確的nameid查詢使用者資訊。
case2是一個反向case, 給出一個錯誤的nameid 查詢使用者資訊。
然後將這兩個case 存放到一個dict 中,最後引入程式碼裡面進行請求使用。

data.py檔案內容如下:

 1 #正向的case
 2 case1='''<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
 3           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 5 <soap:Header> 6 <OGHeader xmlns="http://webservices.micros.com/og/4.3/Core/" transactionID="2019062118114433750450"> 7 <Origin entityID="OW1" systemType="WEB"/> 8 <Destination entityID="TI" systemType="ORS"/>
9 </OGHeader> 10 </soap:Header> 11 <soap:Body> 12 <FetchProfileRequest xmlns="http://webservices.micros.com/oqq/5.1/Name.wsdl"> 13 <NameID type="INTERNAL">186217986</NameID> 14 </FetchProfileRequest> 15 </soap:Body> 16 </soap:Envelope>'''
 1 #反向的case
 2 case2='''<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
 3           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4            xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 5           <soap:Header>
 6             <OGHeader xmlns="http://webservices.micros.com/og/4.3/Core/" transactionID="2019062118114433750450">
 7               <Origin entityID="OW1" systemType="WEB"/>
 8               <Destination entityID="TI" systemType="ORS"/>
 9             </OGHeader>
10           </soap:Header>
11           <soap:Body>
12             <FetchProfileRequest xmlns="http://webservices.micros.com/oqq/5.1/Name.wsdl">
13               <NameID type="INTERNAL">1862179863</NameID>
14             </FetchProfileRequest>
15           </soap:Body>
16         </soap:Envelope>'''
17  
18 dict1={"success":case1,"fail":case2}

test.py檔案內容如下:

 1  
 2 #coding=utf-8
 3 import httplib
 4 from data import dict1
 5  
 6 def Featchinfo():
 7  url="test.beat.com"
 8  port=9700
 9  path="/oqq_ws_51/Name.asmx"
10  header={'Content-Type' : 'text/xml; charset=utf-8'}
11  conn = httplib.HTTPConnection(url,port,timeout=10)
12  for key,value in dict1.items():
13      conn.request('POST',path,value.encode('utf-8'),header)
14      response=conn.getresponse()
15      resp=response.read()
16      if(key=="success" and "resultStatusFlag=\"SUCCESS" in str(resp)):
17          print("case1 驗證通過")
18      elif(key=="fail" and "resultStatusFlag=\"FAIL" in str(resp)):
19          # print(resp)
20          print("case2 驗證通過")
21  
22 if __name__ == '__main__':
23  Featchinfo()
1 結果輸出:
2 case2 驗證通過
3 case1 驗證通過

總結 :
通過以上簡單的幾步就可以完成WebService Api的測試,對於示例中的測試資料大家可以根據Api文件的描述不斷的豐富測試場景。與君共勉,每天進步一點點。

備註:我的個人公眾號已正式開通,致力於測試技術的分享,包含:大資料測試、功能測試,測試開發,API介面自動化、測試運維、UI自動化測試等,微信搜尋公眾號:“無量測試之道”,或掃描下方二維碼:

新增關注,讓我們一起共同成長!