在前面的章節中,我們學習了如何使用 Robot Framework 結合 Playwright 進行 Web UI 自動化測試。然而,在這些示例中,我們只使用了單一的 .robot
檔案來進行測試。在實際工作中,產品的測試往往不可能僅依賴一個檔案完成所有測試。因此在本章節中,將會向大家介紹如何規劃測試框架,以便提升自動化測試的可維護性與可擴展性,並使測試腳本的撰寫更加高效。
在自動化測試專案中,擁有一個良好的架構至關重要,這不僅能提高測試的效率和可維護性,還能確保專案的可擴展性和靈活性。以下是一些關於為什麼需要一個好的架構的關鍵點:
下面我們將介紹專案架構的範例,實際情況大家可以根據產品的特性進行調整,在這個範例框架中的特性是,我們將 test script、keyword、element 三者解耦,拆成三個部分,如此一來當今天 element 有改動時,我們不需要到每個測試案例中修改 element 的參數,只許要修改一個即可,如此一來大大的降低我們的修復成本,在這邊筆者也在這邊將這個專案的框架做開源,https://github.com/max-tsai-qa/rf-playwright-example 大家如果有興趣的話可以 clone 下來執行,或是對於整體框架有想瞭解更多的話也可以到專案中查看。
.
├── README.md
├── init.robot
├── library
│ ├── integration
│ │ └── fake_data.py
│ └── keywords
│ └── keywords-common.robot
├── requirements.txt
├── resource
│ ├── location
│ │ └── element-common.py
│ └── src
├── setting.py
└── test
├── test_add_todo.robot
└── test_mark_todo.robot
這個專案結構分為幾個主要部分,各自負責不同的功能模塊:
integration/
中放的會是 python 撰寫的擴充 keyword。而 keywords/
底下則是放的則是透過 Robot Framework 撰寫的 keywordlocation/
底下放的是元件的定位,而 src
則是放其他與測試相關的資源,像是測試中需要用到的圖片。談到自動化測試的框架設計時,大家肯定都會聽到 Page Object Model,至於什麼是 Page Object Model 呢? Page Object Model 是一種將網頁中的各個元素抽象成物件的設計模式。每一個網頁頁面或是應用程式的視圖,會對應到一個獨立的 "Page Object"。這些物件負責封裝網頁上的元素及其操作,像是按鈕點擊、文字輸入等。測試腳本不直接與這些元素互動,而是透過 Page Object 來進行操作,這樣當頁面發生變更時,只需要修改對應的 Page Object,而不用改動測試腳本中的每一個測試案例。
在上方我們介紹的 Robot Framework 專案架構中,已經有些 Page Object Model 的影子存在了,我們將通用的 keyword 包好放在 keywords-common.robot
中,這時我們也可以根據登入頁面的測試在 keywords 中新增一個 login-keywords.robot
的檔案,根據不同的頁面創造出不同的 keywords,讓我們在撰寫及維護測試腳本上更加便利。
在閱讀本篇後大家對於 Robot Framework 的自動化測試專案架構可以有更多的想像,除了會撰寫測試腳本外,我們也需要具備設計測試架構的能力,讓我們的測試更加的彈性且具備高維護性,並且在閱讀這幾篇關於 Robot Framework 與 Playwright 結合的文章後,我們可以構建一個強大且靈活的 Web 自動化測試框架。這種方法不僅提升了測試的穩定性和效率,也使得測試案例的編寫和維護變得更加輕鬆。隨著專案的擴展,您可以不斷地增加自定義關鍵字和測試案例,以滿足不同的測試需求。