工具應用:Robot Framework->實現數據驅動測試
實驗簡介
本節實驗主要為大家講解利用ExcelLibrary擴展庫完成基於Excel表格的數據驅動的測試腳本開發,並了解在RF框架中循環的基本使用。
實驗目的
(1) 掌握ExcelLibrary的常用關鍵字及用法。
(2) 能夠熟練運用Excel擴展庫操作Excel表格內容。
(3) 掌握RF的循環結構的使用。
實驗流程
- 安裝ExcelLibrary
利用命令「pip install robotframework-excellibrary」進行安裝,安裝完成後,在Ride中導入庫「ExcelLibrary」即可使用。
2. 準備Excel表格數據
為了熟悉對Excel表格的操作,我們先準備一個標準的Excel表格,數據如下:
3. 基本的表格操作:
Open Excel D:\Other\Students.xls@{listCol} Get Column Values Sheet1 0Log Many @{listCol}@{listRow} Get Row Values Sheet1 0Log Many @{listRow}${value} Read Cell Data By Name Sheet1 C4Log Many ${value}${value2} Read Cell Data By Coordinates Sheet1 2 3Log ${value2}${rowCount} Get Row Count Sheet1: FOR ${row} IN RANGE 1 ${rowCount} ${id} Read Cell Data By Coordinates Sheet1 1 ${row} log ${id} ${name} Read Cell Data By Coordinates Sheet1 2 ${row} log ${name} ${school} Read Cell Data By Coordinates Sheet1 6 ${row} log ${school}
現在,我們來對上述代碼進行解釋說明:
(1) 首先,與Java數組一樣,在Excel中的行和列也是從下標0開始的。
(2) 第1行關鍵字「Open Excel」:打開一個Excel文件。
(3) 第2行關鍵字「Get Column Values」,獲取「Sheel1」表格中的第1列的所有值,並保存到列表變數「@{listCol}中。注意,由於此處獲取到的是一串值,所以我們使用List列表型變數來保存,此變數與普通變數的區別在於使用「@」符號來聲明而不是「$」符號。
(4) 第4行關鍵字「Get Row Values」與「Get Column Values」用法相似,讀取第一行的內容。
(5) 第6行關鍵字「Read Cell Data By Name」可以通過單元格的名稱直接讀取到一個具體的單元格的內容。比如「C4」表示第C列第4行的數據,即第3列第4行數據,值為「張小玲」。
(6) 第8行關鍵字「Read Cell Data By Coordinates」則是按照行和列的坐標直接讀取具體的一個單元格的值,下標從0開始。此外的「2,3」對應的即為第3列第4行的數據,值仍然為「張小玲」。
(7) 第10行則是通過關鍵字「Get Row Count」獲取到當前表格的數據行數,並將該數量賦值給變數「${rowCount}」,便於後續進行循環。
(8) 第11行開始則是一個標準的FOR循環,變數「${row}」表示循環變數,「In Range」則是關鍵字,表示循環的開始結束條件。如果後面只指定一個參數,則表示循環次數從0開始到參數減1結束。如果後面跟兩個參數,則表示循環從參數1開始直到參數2減1結束。如果有第三個參數,則第三個參數指定了循環變數的步進長度,默認為1(即i++的作用)。
4. 實現Agileone登錄的數據驅動測試
我們已經基本掌握了利用RF的ExcelLibrary擴展庫操作Excel表格數據的各種用法。那麼將此用法結合Selenium2Library或Requests便可以完成基於界面或協議的數據驅動測試。此處我們直接使用Requests庫來為大家演示利用數據驅動完成對Agileone的登錄功能的測試:
(1) 創建Excel文件,並且將表格名從「Sheet1」重命名為「Login」,數據添加完成後保存在「D:OtherAgileone.xls」。數據如下:
(2) 實現RF測試腳本:
Create Session agileone http://localhost/agileone${headers} Create Dictionary Content-Type=application/x-www-form-urlencodedOpen Excel D:\Other\Agileone.xls${rowCount} Get Row Count Login:FOR ${row} IN RANGE 1 ${rowCount} ${username} Read Cell Data By Coordinates Login 0 ${row} ${password} Read Cell Data By Coordinates Login 1 ${row} ${message} Read Cell Data By Coordinates Login 2 ${row} ${loginData} Create Dictionary username=${username} password=${password} savelogin=true ${respLogin} Post Request agileone /index.php/common/login data=${loginData} headers=${headers} Should Contain ${respLogin.content} ${message}
思考練習
(1) 請利用ExcelLibaray擴展庫完成Agileone其它功能模塊的數據驅動測試。
(2) 請自學使用DatabaseLibrary完成一個基於資料庫的測試。
注:學習更多技術,觀看更多免費視頻,歡迎進入蝸牛學院官網 www.woniuxy.com
希望繼續在IT行業突破提升自己的各位朋友,歡迎加群384053806,不管你自我感覺牛不牛B。
推薦閱讀:
※軟體測試常見面試題及答案
※實戰篇 近期線上BUG分析及解決方案總結
※Xebium詳解09-FIT引擎
※寫在CNAS現場評審之後
※手機黑盒測試