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