監聽器(Listeners)是 Robot Framework 提供的一種擴充機制,它允許我們在測試執行的不同階段攔截事件並執行自訂的 Python 程式碼。這些階段包括但不限於測試開始前、測試結束後、單個測試案例的開始和結束等,在這個章節我們就一起來認識一下 Robot Framework Listeners 吧!
我們可以把 Robot Framework 的監聽器當作是第三方庫的套件 ,其目的是在搜集測試過程的資料或是產出,並且不影響本身測試流程,是一個旁聽者在一旁監聽著,透過監聽器我們可以做到測試的過程中取得 test case 的測試結果,及時的更新到測試結果管理平台,下面我們一起來看一下該如何實作一個 Robot Framework 的監聽器。
當我們今天要使用監聽器時是透過在 robot 觸發測試的指令中加入 --listener
,後面接上監聽器的包及可,我們可以看看下面的範例:
# 指定監聽器的文件絕對路徑
robot --listener integration/TestReport.py test/
# 執行第三方的監聽器,監聽器也可以是由第三方提供,我們透過 pip install 下載後使用
robot --listener allure_robotframework test/
# 我們也可以同時運行多個監聽器
robot --listener allure_robotframework --listener integration/TestReport.py test/
# 當今天我們撰寫監聽器的 script 需要傳入參數時,也可以透過:的方式傳入
robot --listener TestReport.py:arg1:arg2 test/
robot --listener TestReport.py:chrome:en test/
目前監聽器支援兩種版本,兩者可以調用的參數有些許的差異,我們可以針對實際需求選擇所需的版本,版本 2 從 Robot Framework 2.1 開始支援,版本 3 則是從 Robot Framework 3.0 開始支援,當我們今天使用時,需要透過 ROBOT_LISTENER_API_VERSION
指定我們現在要使用的是哪個版本,然而監聽器 2 和 3 之間最大的差異是在時,版本 3 可以在測試的過程中影響測試結果,也就是說原先如果 Robot Framework 在執行 Test Case 的結果是 pass,我們可以在監聽器終將其修改為 fail,監聽器提供許多可以調用的參數,由於篇幅的關係,我們在這邊就不額外多做說明,可以參考官方文件:
需要注意的是,這邊的 class name 需要跟檔案名稱相同才可以正確的使用到 Listener,以這個範例為例,我們需要將檔案名稱設定為 TestListener.py
from robot.libraries.BuiltIn import BuiltIn
class TestListener:
ROBOT_LISTENER_API_VERSION = 2
def start_suite(self, name, attrs):
BuiltIn().log_to_console(f"開始測試套件: {name}")
def end_suite(self, name, attrs):
BuiltIn().log_to_console(f"結束測試套件: {name}, 狀態: {attrs['status']}")
def start_test(self, name, attrs):
BuiltIn().log_to_console(f"開始測試案例: {name}")
def end_test(self, name, attrs):
BuiltIn().log_to_console(f"結束測試案例: {name}, 狀態: {attrs['status']}")
在上面的程式碼中,我們透過 ROBOT_LISTENER_API_VERSION
是 2 的版本作為範例,並且分別在 suite 及 test 的 setup, teardown 在終端機中印出字串。
接著是創建一個 test.robot
的測試檔案:
*** Settings ***
Documentation Test Listeners
*** Test Cases ***
Test Case 001
Log message=Print Test Case 001
Test Case 002
Log message=Print Test Case 002
透過上面介紹觸發 Listener 的方式觸發測試:
robot --listener TestListener.py test.robot
最後我們可以在終端機上面看到我們剛剛指定 log_to_console
的資料:
==============================================================================
Test :: Test Tags
==============================================================================
start_suite name: Test
Test Case 001 start_test name: Test Case 001
.end_test name: Test Case 001, status: PASS
Test Case 001 | PASS |
------------------------------------------------------------------------------
Test Case 002 start_test name: Test Case 002
.end_test name: Test Case 002, status: PASS
Test Case 002 | PASS |
------------------------------------------------------------------------------
end_suite name: Test, status: PASS
Test :: Test Tags | PASS |
2 tests, 2 passed, 0 failed
==============================================================================
Robot Framework 的監聽器是一個強大且靈活的工具,能夠幫助你更好地控制和監控自動化測試流程。通過理解並使用監聽器,你可以根據特定需求自訂測試執行過程,從而大幅提高測試效率和測試報告的價值。
希望這篇部落格能幫助你更好地理解和使用 Robot Framework 的監聽器功能。如果有任何疑問或需要更多範例,歡迎在下方留言一起交流。
在這個章節結束後,關於 Robot Framework 的基礎概念我們就先介紹到這裡啦!接下來開始,我們將進入到 結合 Playwright 進行 Web 自動化測試 實戰環節啦!關於 Robot Framework 的部分,其實還是有很多使用的方式沒有介紹到,但是等到大家真的要使用到時再查也不遲,先知道這些基礎的使用後,對於我們後續在 Web、App 自動化測試實際操作中會有很大的幫助,那麼感謝大家的支持,明天讓我們一起朝 Web 自動化測試邁進吧!