SouapUI介面測試之使用Excel進行參數化
- 2019 年 10 月 10 日
- 筆記
前言
這次我們使用「中國飛機航班時刻表 WEB 服務」介面來練手,因為介面中的方法「getDomesticAirlinesTime 」需要輸入多個參數,正符合我們的要求。
中國飛機航班時刻表 WEB 服務
公用事業 Endpoint:http://ws.webxml.com.cn/webservices/DomesticAirline.asmx Disco:http://ws.webxml.com.cn/webservices/DomesticAirline.asmx?disco WSDL:http://ws.webxml.com.cn/webservices/DomesticAirline.asmx?wsdl
本篇學習如下內容:
1).使用DataSource調用Excel中的數據給介面參數化;
2).使用DataSource Loop使得測試用例根據Excel中的取值循環執行。
一、獲得航班時刻表 DataSet
1.我們看一下方法「getDomesticAirlinesTime 」的介紹:
輸入參數:startCity = 出發城市(中文城市名稱或縮寫、空則默認:上海);lastCity = 抵達城市(中文城市名稱或縮寫、空則默認:北京);theDate = 出發日期(String 格式:yyyy-MM-dd,如:2007-07-02,空則默認當天);userID = 商業用戶ID(免費用戶不需要) 返回數據:DataSet,Table(0)結構為 Item(Company)航空公司、Item(AirlineCode)航班號、Item(StartDrome)出發機場、Item(ArriveDrome)到達機場、Item(StartTime)出發時間、Item(ArriveTime)到達時間、Item(Mode)機型、Item(AirlineStop)經停、Item(Week)飛行周期(星期)
2.getDomesticAirlinesTime 的請求如下:

getDomesticAirlinesTime 請求
3.輸入始發城市和終止城市得到如下響應:

響應結果
4.把getDomesticAirlinesTime 加到測試用例中

getDomesticAirlinesTime添加到測試用例
二、準備Excel文件
1.根據getDomesticAirlinesTime 的請求,創建一個Excel文件,內容如下,時間和userID都不參數化,留空,採用默認值(目前soapui只支援xls的)。

Excel文檔
三、設置DataSource
注意:免費版的SoapUI是沒有DataSource這個功能的。
1.在測試用例中添加步驟DataSource,如下圖

設置DataSource
2.配置DataSource數據來源,如下圖選擇數據來源為「Excel」並填寫EXCEL數據的相關資訊

配置DataSource數據
3.在DataSource中添加參數,相對應EXCEL有幾個就添加幾個參數,一一對應,如下圖所示:

添加參數
4.運行DataSource取得Excel中的參數值,如下圖所示,取兩2行數據

取得Excel中的參數值
5.當然,也可以設置取哪一行到哪一行的數據,如下圖所示:

設置數據
四、介面中參數化
1.配置好DataSource好,就可以在介面中進行參數化了,如下圖所示,測試用例中打開「getDomesticAirlinesTime」選擇要參數化的地方 > 右鍵選擇「Get Data..」 > 選擇剛才配置的DataSource > 再選擇對應的參數。

介面參數化
2.如下,已配置好參數(其實我們手寫這個程式碼也可以):

配置參數程式碼
五、運行測試用例
1.如下圖,打開TestCase運行測試

運行測試用例
2.在「TestCase Log」雙擊步驟「getDomesticAirlinesTime」,打開「Message Viewer」窗口,可以檢查請求資訊中的參數值,如下圖所示,與Excel中的值一至。

查看請求數據
六、使用DataSource Loop循環取值
1. 新建步驟DataSource Loop

創建DataSource Loop
2.配置DataSource Loop,如下圖

配置DataSource Loop
3.配置好DataSource Loop後還需要調整一下步驟順序,正確的步驟應當是「數據源—請求—-數據源循環」。如下圖是我調整好的步驟順序:

調整步驟順序
4.最後運行TestCase,如下圖在日誌中可以看到介面循環執行了:

查看日誌
5.最後還要說一點,我們可以設置TestCase的屬性,使得在當前循環不通過時,跳到下一個循環(循環執行的時候這個比較重要)。如下圖,打開TestCase option窗口,去掉「Abort test if an error occurs」的構選:

設置TestCase屬性
參考來源:helenMemery