iT邦幫忙

2024 iThome 鐵人賽

DAY 8
0

當我們在使用 Robot Framework 時,經常會載入些第三方的 Library 像是 Browser、AppiumLibrary,然而 Robot Framework 也提供了我們自創 Library 的能力,當今天第三方或是內建的 Library 不足以滿足我們的需求,或是透過 Robot Framework 撰寫會太複雜的操作時,我們便可以透過自訂義的 Library 來進行操作,下面讓我們一起來看看如何建立自訂義的 Library 吧。

為什麼要使用自定義keyword

自定義keyword(Custom Keywords)是一項強大功能,能夠有效地提高測試案例的可重用性和維護性。

  • 提高可讀性與可維護性:自定義 keyword 可以將多個操作封裝在一個高層次的描述性名稱中,使測試案例更容易理解和維護。
  • 減少重複程式碼:如果測試案例中出現了多次相同的操作,自定義keyword可以將這些操作封裝在一起,從而減少程式碼重複。
  • 進行較複雜的操作:眾所皆知,連官方都推薦說,當今天操作較為複雜時,便不適合透過 Robot Framework 本身的邏輯是進行實作,因為會增加維護的難易度,因此當我們今天遇到較複雜的操作時,則可以透過 python 組合出我們自定義的 keyword 來進行使用

該如何建立自定義的 keyword?

首先我們需要先建立一個 .py 的檔案,並且在裡面寫下我們希望的創建的 keyword 的功能:

from datetime import datetime

def create_fake_item_name() -> str:
    timestamp = datetime.timestamp(datetime.now())
    return f'item_{timestamp}'

def create_fake_project_name() -> str:
    timestamp = datetime.timestamp(datetime.now())
    return f'project_{timestamp}'

def create_fake_user_name() -> str:
    timestamp = datetime.timestamp(datetime.now())
    return f'user_{timestamp}'

透過上面的程式碼,我們可以得知,我們創建了三個 keyword,他們都是用來在測試過程中產生假資料的,如此一來我們就完成自定義的 keyword 創建了,接著是在 .robot 中使用他們:

*** Settings ***
Library    fake_data.py

*** Test Cases ***
Add One ToDos And Check Items
    ${project} =    Create Fake Project Name
    ${item} =    Create Fake Item Name
    ${user} =    Create Fake User Name
    Log To Console    ${project}
    Log To Console    ${item}
    Log To Console    ${user}

.robot 中,我們透過 Library 直接將該 .py 檔案匯入,就像 *** Settings *** 中的 Library fake_data.py,接著我們就可以調用剛剛創建的 keyword 啦,而 keyword 的名稱就是我們在 python 檔案中的 function 名稱,是不是超方便的呀!

當我們在輸入 keyword 時,IDE 也會推薦給我們自定義的 keyword!
https://ithelp.ithome.com.tw/upload/images/20240917/20168859dWxIi3S2Aj.png

結語

自定義 keyword 是 Robot Framework 中的一個強大功能,能夠顯著提高測試案例的可讀性和維護性。無論是通過簡單的語法在測試案例文件中創建,還是使用 Python 實現更複雜的邏輯,自定義 keyword 都能幫助你構建更高效、更易於維護的測試架構。


上一篇
[7] Robot Framework 斷言(Assertion)
下一篇
[9] Robot Framework 監聽器 (Listeners)
系列文
建立應用程式 UI 自動化測試 - 以 Robot Framework 為例30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言