基於RobotFramework的web自動化測試


本文章內容參考了白夜黑羽教python的教程,出處為http://www.python3.vip/doc/tutorial/selenium/01/

感謝上方大佬!

提前准備的環境及資源:

1.被測系統:白月SMS系統

2.需求文檔:點擊這里訪問

3.基於RobotFrameWork的黑羽robot:點擊這里訪問

4.安裝RobotFramework,執行 :pip install robotframework 即可

5.pycharm

環境OR資源介紹:

1.下載解壓bysms.zip后,進入bysms目錄,雙擊運行runserver.bat 即可啟動 白月SMS系統。 出現下面這樣的信息

 注意:該窗口不能關閉,否則web 系統就會停止

然后可以瀏覽器訪問 登錄頁面 http://127.0.0.1/mgr/sign.html

輸入用戶名 :byhy 密碼: 88888888

3.黑羽robot

解壓下載的zip包,會產生一個名為 autotest_hyrobot 的目錄, 這就是hyrobot的自動化項目目錄。

 

你修改該目錄的名字,比如我們要講解 自動化測試 白月SMS系統 , 就可以改名為 autotest_bysms

黑羽robot 項目目錄中包含

  • cases 目錄

    里面存放 自動化測試用例代碼

  • cfg 目錄

    里面存放 配置文件

  • hyrobot 目錄

    里面存放 hyrobot庫 和 工具 代碼, 開發者不需要 修改里面的內容

  • lib 目錄

    里面存放 自動化測試用例 使用的 庫 存放的目錄

  • run.bat

    運行 黑羽robot, 執行自動化測試 的 腳本

環境的使用:

1.可在pycharm中打開黑羽robot目錄,依據用例文檔編寫測試用例

 圖中,每一個用例都對應一個類,不用用例名做類名,因為用例名中可能包含特殊符號

右鍵點擊.py文件,有Synchronize文件的選項,點擊后就會出現同名的.robot文件,這個其實就是轉換為robotframework語法后的文件,

2.用例設計完成后,在Pycharm中的Terminal或cmd窗口中運行run.bat(直接輸入run.bat回車即可)

然后會生成測試結果和測試報告(在Lib文件夾中)

rf.bat是直接用robotframework運行的,如果沒有了解過,還是只用run.bat就好了

3.這里插播介紹幾個黑羽robot的內置函數:

  <一.划分測試步驟>

(1).在用例的.py文件第一行導入黑羽內置函數包:from hyrobot.common import *

(2).在每個需要表明步驟的位置寫: STEP(1,'登錄網站')  

如圖:

 如此,就可以在生成的結果中看到具體是進行到哪一個步驟時出現了問題。如下圖:

  <二.設置檢查點>

(1).設計測試用例的時候,如果用例的測試未通過,不能退出測試,下圖的寫法是錯誤的

 (2).正確的寫法,用CHECK_POINT()函數,傳入兩個參數,第一個是檢查點的描述,第二個是具體的檢查方法

   <三.打印可以在log中或報告中顯示的內容>

(1).用例中寫的print內容是不會在log或report中顯示的,只會在pycharm終端顯示

(2).如果想讓某些內容在log或report中顯示,把print換成INFO()即可

4.測試用例中重復的操作,比如打開瀏覽器,登錄的操作,可以做成一個文件放在lib文件夾內

每次要使用的時候,在用例.py文件的第一行導入這個文件即可,如from lib.webui import *

5.但每個用例執行時都要打開瀏覽器然后登錄,不如共享登錄環境,在此賬號下盡行各種操作,這就是共享數據

同一個環境下用例執行完畢后(數據共享完成后),還需要對環境進行初始化,清除干凈所用共享數據,來保證其他環境下用例的執行不會受到影響。

黑羽robot的初始化/清除(和robotframework一樣)支持 3種方式

  • 單個用例的初始化、清除
  • 整個用例文件的初始化、清除
  • 整個用例目錄的初始化、清除

6.這里插播介紹幾個黑羽robot的內置函數:

 <一.創建全局變量>

GSTORE['名字'] = 全局變量名

7.單個用例共享數據的初始化和清除

如圖上面的圖片↑,先在庫函數中准備好全局變量wd(包括在open_browser創建以及新建一個函數get_global_webdriver用來方便引用)

 接着在用例中寫好共享數據的創建(setup)和清除(teardown)

圖中這個類中的函數的執行順序是setup-->其他函數-->teardown(teardown中包含了wd.quit()所以其他函數中就不用再寫quit了)

這樣,每一個用例(類)執行時,都進行了創建共享數據、執行用例、清除共享數據的過程

8.整個用例文件共享數據的初始化和清除

在定義的class之外,定義suite_setup()和suite_teardown()函數,相當於執行這套用例的時候,運行順序為:suite_setup-->其他類-->suite_teardown()

 假如我在suite_setup和suite_teardown中分別設置了打開瀏覽器登錄賬號、退出瀏覽器,那么也就是說這兩個用例共享了數據。

9.整個用例目錄的初始化和清除(插播黑羽robot的一個內置文件)

比如有時候會出現整個目錄下的用例都需要共享數據環境,那么黑羽robot內置了一個文件,當文件命名為__st__.py時,這個文件所在的最近一層目錄中的用例文件,都會使用它里面定義的數據環境,如圖所示

 

 那么說明管理員操作和葯品操作兩個用例文件共用了數據環境,執行順序如圖

 

 10.挑選要執行的測試用例

有時候不需要全部的用例跑一遍,只需要測試其中一部分用例,那么有幾種挑選方法:

<一.根據名稱挑選>

 

 

 

 

 

 如果名稱無規律,並且數量也很多,那么可以創建一個名字為args的參數文件,內容如下

 

 一行一個參數,然后命令的話,敲   run -A args   就可以了

<二.根據標簽挑選>

標簽的創建:

  ①比如   force_tags = ['登錄功能','冒煙測試','UI測試']   放在class類中,那么這個類下的所有用例都會帶有此標簽。

  ②比如   force_tags = ['登錄功能','冒煙測試','UI測試'放在一個.py文件中做全局變量,那么這個py文件中的所有用例都是帶有此標簽的

  ③比如   force_tags = ['登錄功能','冒煙測試','UI測試']   放在__st__.py文件中,那么對應所在的目錄下的所有.py文件中的所有用例都會帶有此標簽。

標簽的挑選:

 

 

 11.指定關鍵測試用例

定義及重要性:如果本次測試中有關鍵測試用例沒有通過,整個測試就被視為測試不通過。

 可以通過命令參數 --critical--noncritical 后面加 標簽名稱 來指定哪些用例 是 關鍵用例 或者 非關鍵用例

 

 

 

 

 

 

 12.代碼的debug方法

由於在這個robot框架下,如果代碼部分出現問題,不能直接用右鍵的debug來調試,因為當前的代碼是python代碼轉換成了robotframework格式的代碼,所以運行出錯去調試的時候不能直接調試python代碼。

 

 在修改的過程中,如果不確定某行的代碼是否正確,想debug一下,那么需要進行一下配置

 點擊如上圖所示的debug configurations,添加好代碼腳本的路徑(找到要調試的代碼文件)

接下來點擊“+”號,新建一個Python文件,可以命名為“DebugRun”

 

 參數配置如下

 

 Configuration中較為重要的是Module name和Working directory

 Module name直接寫robot.run即可

Working directory寫文件的根目錄

OK后,再回到pycharm代碼頁面點擊debug,就相當於是cd到根目錄,運行python -m robot.run cases這個命令,然后代碼就會依次debug到斷點,最后根據到達斷點的數據返回情況判斷是哪里出現了異常。

 

 

--end--


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM