Robot Framework分層設計與項目實戰


Robot Framework分層設計

分層(Layer)模式是最常見的一種架構模式。甚至說分層模式是很多架構模式的基礎,將解決方案的組件分隔到不同的層中。每一層中的組件應保持內聚性,並且應大致在同一抽象級別。每一層都應與它下面的各層保持松散耦合。
分層模式的關鍵點在於確定依賴:即通過分層,可以限制子系統間的依賴關系,使系統以更松散的方式耦合,從而更易於維護。

如下為禪道登錄的自動化測試示例:

針對禪道登錄測試,我們可能不會只用一組“admin,123456”的用戶去做測試,還會使用多組用戶數據去做測試,那可以在Login模塊創建多個登錄測試用例,如下圖:

其實對於每一條測試用例來說,只是登錄的用戶名和密碼不同,腳本步驟是完全一樣的。這樣做無疑增加的腳本的冗余,而且不便於維護。假如,某個輸入框的定位方式變了,就不得不打開每一條用例進行修改。

可以通過分層的思想,然后根據robot_framework提供的功能來完成上述示例的優化,操作步驟如下:
1、創建資源:右鍵“UITest”,選擇“New Resource”創建資源,輸入名稱“業務關鍵字”

2、創建關鍵字:右鍵“業務關鍵字”,選擇“New Keyword”創建關鍵字,輸入名稱“禪道登錄”

3、編輯關鍵字:選中“禪道登錄”,點擊“Settings”按鈕,點擊“Arguments”輸入框,輸入如下:

參數之間用 | 分割線分開,如果想給參數一個默認值,可以如下編寫:
${username} | ${passwd} | ${exceptedRes}=admin 默認值參數必須放最后

4、把之前的登錄業務代碼也放入業務關鍵字中,如下:

5、添加導入的資源以及調用關鍵字:
切換到測試套件(Login)頁面,添加資源(業務關鍵字.txt),然后在測試用例中使用創建的關鍵字。如下圖所示:

6、進行繼續細化分層設計:
在上一個操作步驟中,對於每一條用例來說,調用“禪道登錄”關鍵字,輸入用戶名、密碼以及預期結果即可。不用關心用例是如何執行的。如果元素定位發生了變化,只用去修改“禪道登錄”關鍵字即可,不用對每一條用例做任何修改。大大提高的用例的維護性和擴展性。
我們還可以做如下細化操作,把過程中的步驟進行再次分層:

禪道登錄業務關鍵字內容改造如下:

基礎關鍵字內容如下:

使用命令行執行Robot Framework腳本

編寫好的Robot Framework腳本,可以使用Robot Framework自帶的pybot命令去執行測試,具體使用方法如下:
1、執行一個項目的所有測試用例:
pybot 項目路徑(項目路徑可以如下方式查看)

2、執行一個測試套件的所有用例:
pybot 項目路徑\suit文件名稱(如下圖)

3、執行測試套件中的測試用例:
pybot --test 用例名稱 項目路徑\suit文件名稱 (用例名稱支持* ?去做匹配)
舉例:
pybot --test “TestCase01" /Users/TestProject/TestSuite01.txt
pybot --test “TestCase*" /Users/TestProject/TestSuite01.txt

4、執行項目中指定標簽名的測試用例:
pybot --include 標簽名稱 項目路徑 (其中標簽名稱在測試用例的設置中添加)


pybot --include “smokeTest” /Users/TestProject/

5、傳遞變量參數:
使用Add Scalar去添加變量,添加完成后,可以使用命令行傳遞變量到測試腳本中去。

舉例:

pybot --test "TestCase01" -v num1:10 -v num2:10 /Users/TestProject/TestSuite01.txt

6、設置存放輸出文件的路徑:
-d \–outputdir 輸出文件的路徑。默認目錄是測試案例執行的目錄,給出的目錄也是相對於案例執行的目錄,除非設置的目錄是絕對路徑。
舉例:

pybot --test "TestCase01"  -d /Users/TestProject/ /Users/TestProject/TestSuite01.txt

Robot Framework集成Jenkins環境

Jenkins工具介紹:
監視重復工作的執行,本質上提供了一個易於使用的持續集成系統,使得開發人員更容易地將改變集成到工程中,使得用戶更容易獲得一個新的build。自動化,持續的構建提高了軟件開發的效率。

Robot framework集成Jenkins步驟如下:
1、安裝Robot Framework plugin 插件
登錄Jenkins 之后,依次進入系統管理 – 管理插件頁面,然后在可選插件中選擇Robot Framework plugin 進行安裝即可。

2、安裝完之后,進入 jenkins首頁 -- 新建任務—構建一個自由風格的軟件項目—輸入項目名稱后,點擊確定。如下圖所示:

3、配置job頁面
增加構建步驟,類型為:Execute shell

設置運行RobotFramework腳本的命令

備注:里面輸入的命令為之前所講過的命令行執行RobotFramework腳本的命令

增加構建后操作步驟,類型為Publish Robot Framework test results,配置如下:


Directory of Robot output:該項要設置和構建步驟中的命令行 –d 后面的參數一致,否則會找不到如下配置的結果文件
Other files to copy:定義你要拷貝的其它文件,如果不設置,那么robot framework腳本運行過程中產生的截圖等文件,在后面生成的報表中會不能顯示。可以設置為.或者*.png
Thresholds for build result 閥值設置,如70%和90%,測試用例執行成功率和通過率

設置每天定時自動執行:增加構建觸發器,選擇類型Build periodically
日程表填寫格式為: * * * * * (注意,*號之間空格)
*號依次代表分、時、日、月、星期
比如:10 * * * * 10 14 * * * 10 14 8 * *

4、結果展示及其配置
做好之前的配置后,等設置的時間到達,可以自動運行robot測試腳本,運行后
可以直接在JOB展示頁查看結果,結果的展示是通過Robot Framework plugin插件實現的,圖形結果略,報表如下圖所示:

點擊open log.html鏈接,一般情況下會出現如下圖所示,不能顯示報表。

該問題有多種處理方式:
一、臨時解決方式:
jenkins系統管理—>運行命令行,在文本里輸入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
點擊運行即可解決,重啟jenkins后失效。
二、永久解決方式:
修改jenkins.xml如下:
-Xrs -Xmx256m -Dhudson.model.DirectoryBrowserSupport.CSP= -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"

5、利用 Zentimestamp 插件分批次生成測試報告
Zentimestamp 插件是用來自定義日期和時間模式的插件,之前配置的robot framework腳本執行后,都會覆蓋之前的測試結果,可以使用該插件根據執行時間分批次存放測試結果。配置如下:
1)安裝Zentimestamp插件,和之前安裝robot插件一樣
2)進入系統管理---系統設置---全局屬性,修改如下:

3)進入job配置頁面,把之前的shell做如下修改,增加 \({BUILD_TIMESTAMP} ![](https://img2018.cnblogs.com/blog/1526094/201912/1526094-20191230225723550-306505993.png) 4)在構建后操作 -- Directory of Robot output中同步修改,添加\){BUILD_TIMESTAMP},執行batch時,引用Jenkins中定義的變量用%param%

6、自定義robot framework 郵件測試報告
1)安裝插件Email Extension Plugin,該插件能允許你自定義郵件通知的方方面面,比如在發送郵件時你可以自定義發送給誰,發送具體什么內容等等,比jenkins自帶的郵件插件強大很多。
2)登錄163郵箱,開通smtp服務並設置郵箱客戶端授權碼
3)針對該插件進行全局配置:
進入系統管理 - 系統設置 - 配置Extended E-mail Notification默認設置(以163為例),點開高級按鈕,勾選Use SMTP Authentication,輸入163郵箱賬號和163郵箱客戶端授權碼(非郵箱登錄密碼)

4)繼續做如下配置

5)把管理員郵箱設置和發送郵件的163郵箱名一致:

6)針對該插件進行項目配置:
進入Job配置頁面,增加一個構建后操作步驟Editable Email Notification,配置可以默認,也可以根據你的需要來配置。
可把Default Subject 郵件主題增加項目名稱,如下:
RFDemo自動化測試報告——$DEFAULT_SUBJECT
可把郵件的觸發器改為構建完成總是發送郵件,點擊 Advanced Settings... ,做如下設置

7)之前在第四步設置了郵件模版,需要把對應的groovy-html-robot.template模版放入到 \(Jenkins_Home/email-templates目錄 \)Jenkins_Home可以通過進入系統設置查看:點擊系統管理—系統設置,查看主目錄
如果該目錄下沒有email-templates目錄,新建一個該目錄即可。
把自定義的模版文件groovy-html-robot.template放置在該目錄。
備注:以后有新的模版也可以放入該目錄,然后把郵件模塊設置成新模版。
登錄163郵箱查看的郵件報告:


免責聲明!

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



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