發布處理具有相同名稱的關鍵字
使用機器人框架要么是關鍵詞 圖書館 關鍵字 或 用戶的關鍵字 。 前來自 標准 庫 或 外部庫 ,后者 中創建相同的文件在使用或進口 資源文件 。 許多關鍵字使用時,是很常見的 他們中的一些人有相同的名字,這部分描述了如何 在這些情況下處理可能的沖突。
關鍵字范圍
當只使用一個關鍵字的名字,有幾個關鍵詞 這個名字,機器人框架試圖確定哪些關鍵字的 最高優先級根據其范圍。 關鍵字的范圍確定 的基礎上如何創建問題的關鍵字:
- 創建一個用戶關鍵字在同一個文件中使用。 這些 關鍵詞有最高的優先級和他們總是使用,甚至 如果有其他具有相同名稱的關鍵字。
- 中創建一個資源文件,直接或進口 間接地從另一個資源文件。 這是第二高的 優先級。
- 中創建一個外部測試庫。 使用這些關鍵字,如果 沒有用戶具有相同名稱的關鍵字。 然而,如果有 具有相同名稱的關鍵字在標准庫,一個警告 顯示出來。
- 中創建一個標准庫。 這些關鍵詞是最低的 優先級。
指定關鍵字顯式地
范圍單獨不是一個充分的解決方案,因為可以有 具有相同名稱的關鍵字在幾個庫或資源,和 因此,他們提供一種機制來只使用的關鍵字 最高優先級。 在這種情況下,可以使用 完整的名字 的關鍵字 ,關鍵字名稱前綴的名稱 資源或圖書館和一個點是一個分隔符。
庫關鍵字,長格式意味着只有使用格式 LibraryName。 關鍵字的名字 。 例如,關鍵字 運行 從 操作 圖書館可以作為 OperatingSystem.Run ,即使有另一個 運行 關鍵字在其他地方。 如果圖書館在一個模塊或包, 完整的模塊或包名稱必須使用(例如, com.company.Library.Some關鍵字 )。 如果一個自定義的名字 圖書館使用 與名語法 ,必須指定名稱 也用於整個關鍵字的名字。
資源文件中指定完整的關鍵字的名字,同樣的 庫名稱。 資源的名稱來源於basename 資源文件的文件擴展名。 例如, 關鍵字 例子 在一個資源文件 myresources.html 可以 被用作myresources.Example 。 注意,這個語法沒有 工作,如果多個資源文件:相同。 在這樣的 情況下,文件或關鍵字必須重命名。 完整的名字 關鍵字的情況下,空間,underscore-insensitive相似 正常的關鍵字的名字。
指定明確的庫之間的優先和資源
如果有多個關鍵詞之間的沖突,指定所有的關鍵詞 在長格式可以相當多的工作。 使用長格式也 無法創建動態測試用例或用戶的關鍵字以不同的方式工作 這取決於圖書館或資源是可用的。 一個解決方案 這些問題是使用關鍵字指定關鍵字重點明確 圖書館搜索順序 從 內裝式 圖書館。
請注意
盡管關鍵字這個詞 圖書館 在它的名字,它的工作原理 資源文件。 正如上面所討論的,關鍵詞資源 總是有更高的優先級比關鍵詞庫。
的 圖書館搜索順序 接受一個有序列表或庫 資源作為參數。 當在測試數據匹配多個關鍵字的名字 關鍵詞,第一個庫或包含關鍵詞選擇和資源 關鍵字實現使用。 如果沒有找到關鍵字的 指定的庫或資源,執行失敗的沖突一樣 當搜索訂單沒有設置。
的更多信息和示例,請參見文檔的關鍵字。
超時
關鍵字可能有問題的情況 極長執行或者只是沒完沒了地。 機器人框架 允許你設置超時的 測試用例 和 用戶 關鍵字 ,如果沒有完成在測試或關鍵字 指定的時間,目前正在執行的關鍵字 有力地停了下來。 停止關鍵詞以這種方式可能會離開 庫或被測系統到一個不穩定的狀態,和超時 建議只有當沒有更安全的選擇。 一般來說, 圖書館應該實現關鍵字不能掛起或 他們有自己的超時機制,如果必要的。
測試用例超時
測試用例可以通過設置超時使用 測試 超時 設置表或設置 (超時) 設置測試用例表中。 測試超時 在設置 表定義了一個默認超時時間值的測試用例進行測試 測試套件,而 (超時) 在測試用例表中 一個超時適用於一個單獨的測試用例,覆蓋 可能的默認值。
使用一個空 (超時) 意味着沒有測試 超時即使 測試超時 使用。 也有可能 使用價值 沒有一個
為這個目的。
不管測試超時定義,第一個單元格 設置名稱包含的時間超時。 持續時間 必須在機器人框架的 時間格式 ,也就是說, 直接在幾秒鍾內或在一個格式 1分鍾 30秒
。 必須指出的是,總有一些開銷的 框架,超時時間短於一秒也沒有 推薦。
測試時的默認錯誤消息顯示超時 測試超時<時間>超過
。 還可以使用自定義 錯誤消息,而這些消息被寫進細胞 超時之后持續時間。 消息可以分成多個 細胞,同樣的文件。 超時值和 錯誤消息可能包含變量。
如果有一個超時,關鍵字是停在運行 超時過期,測試用例失敗。 然而,關鍵字 執行 測試拆卸 如果一個測試超時不中斷 發生,因為他們通常從事重要的清理 活動。 如果有必要,也有可能中斷 關鍵字與 用戶關鍵字超時 。
*** Settings *** Test Timeout 2 minutes *** Test Cases *** Default Timeout [Documentation] Timeout from the Setting table is used Some Keyword argument Override [Documentation] Override default, use 10 seconds timeout [Timeout] 10 Some Keyword argument Custom Message [Documentation] Override default and use custom message [Timeout] 1min 10s This is my custom error Some Keyword argument Variables [Documentation] It is possible to use variables too [Timeout] ${TIMEOUT} Some Keyword argument No Timeout [Documentation] Empty timeout means no timeout even when Test Timeout has been used [Timeout] Some Keyword argument No Timeout 2 [Documentation] Disabling timeout with NONE works too and is more explicit. [Timeout] NONE Some Keyword argument
用戶關鍵字超時
用戶可以設置一個超時使用的關鍵字 (超時) 設置關鍵字表中。 設置它的語法,包括如何 超時值和可能的自定義消息, 相同的語法使用 測試用例超時 。 如果沒有定義 提供消息,默認錯誤消息 關鍵字超時 <時間>超過
如果使用超時。
從機器人Framework 3.0開始,可以指定超時變量 這樣,變量值作為參數給出。 使用全局變量 工作已經與先前的版本。
*** Keywords *** Timed Keyword [Documentation] Set only the timeout value and not the custom message. [Timeout] 1 minute 42 seconds Do Something Do Something Else Wrapper With Timeout [Arguments] @{args} [Documentation] This keyword is a wrapper that adds a timeout to another keyword. [Timeout] 2 minutes Original Keyword didn't finish in 2 minutes Original Keyword @{args} Wrapper With Customizable Timeout [Arguments] ${timeout} @{args} [Documentation] Same as the above but timeout given as an argument. [Timeout] ${timeout} Original Keyword @{args}
用戶關鍵字超時執行期間適用的用戶 關鍵字。 如果整個字的總時間較長 超時值,當前關鍵字停止執行。 用戶關鍵字 超時也適用於在一個測試用例拆卸,而測試 超時不是。
如果測試用例和它的一些關鍵字(或幾個嵌套 關鍵字)有一個超時,超時是最少的 時間了。
For循環
多次重復相同動作是相當常見的需要在測試 自動化。 與機器人框架,可以有任何類型的測試庫 循環結構,大部分時間應該實現循環 他們。 機器人也有自己的for循環語法框架,這是 有用的,例如,當需要重復關鍵詞 不同的庫。
可以使用For循環測試用例和用戶的關鍵詞。 除了 很簡單的情況下,用戶關鍵字更好,因為他們隱藏 for循環引入的復雜性。 循環的基本語法, 項的序列
來自Python,但相似 語法也可能在shell腳本或Perl。
正常的循環
在一個正常的循環,從值列表中分配一個變量, 每迭代一個值。 語法開始 :對於
,在那里 結腸癌是需要獨立的語法從正常的關鍵詞。 的 下一個單元格包含循環變量,隨后的細胞必須有在
,最后細胞包含迭代值。 這些值可以包含 變量 ,包括 變量列表 。
for循環中使用的關鍵詞是第二行和他們必須 向右縮進一個細胞。 當使用 純文本格式 , 縮進細胞必須 用反斜杠轉義 ,但與其他 數據格式可以是空的細胞。 for循環結束 當壓痕返回恢復正常或表結束。
*** Test Cases *** Example 1 :FOR ${animal} IN cat dog \ Log ${animal} \ Log 2nd keyword Log Outside loop Example 2 :FOR ${var} IN one two ... ${3} four ${last} \ Log ${var}
for循環在 示例1 以上是執行兩次,所以第一 循環變量 $ {動物}
的值 貓
然后 狗
。 循環包括兩個 日志 關鍵詞。 在 第二個例子,循環值 分成兩行 和 循環運行的5倍。
這往往是方便使用for循環 變量列表 。 這是 下面的示例所示, @ {元素}
包含 任意的元素和關鍵字 開始元素 是 使用他們一個接一個。
*** Test Cases *** Example :FOR ${element} IN @{ELEMENTS} \ Start Element ${element}
嵌套的循環
直接在不支持嵌套的循環,但可以使用 用戶關鍵字在一個for循環和有另一個for循環。
*** Keywords *** Handle Table [Arguments] @{table} :FOR ${row} IN @{table} \ Handle Row @{row} Handle Row [Arguments] @{row} :FOR ${cell} IN @{row} \ Handle Cell ${cell}
使用幾個循環變量
還可以使用幾個循環變量。 語法是 一樣的正常循環,但所有循環變量中列出 細胞之間的 :對於
和 在
。 可以有任意數量的循環 變量,但值的數量必須是均勻的數量可分的 變量。
如果有很多值迭代,通常是方便的組織 他們在循環變量,如第一個循環下面的例子:
*** Test Cases *** Three loop variables :FOR ${index} ${english} ${finnish} IN ... 1 cat kissa ... 2 dog koira ... 3 horse hevonen \ Add to dictionary ${english} ${finnish} ${index} :FOR ${name} ${id} IN @{EMPLOYERS} \ Create ${name} ${id}
For-in-range循環
早些時候總是for循環迭代序列,這也是最 常見的用例。 有時它還方便有一個for循環 這是執行一定數量的次,機器人有一個框架 特殊的 指數的范圍限制
語法這一目的。 這 Python語法來源於類似的習語。
同樣作為循環,其他for-in-range循環開始 :對於
循環變量是在接下來的細胞。 在這種格式 只能有一個循環變量,它包含當前循環 索引。 下一個細胞必須包含 在范圍內
和隨后的 細胞循環限制。
在最簡單的情況下,只有循環的上限 指定。 在這種情況下,循環索引從0開始,增加一個 但不包括,直到極限。 也可以給的 開始和結束的限制。 然后索引開始從一開始限制,但是 增加同樣的簡單情況。 最后,它是可能的 還一步值,指定要使用的增加。 如果這一步 是負的,這是作為遞減。
可以使用簡單的加法和減法等算法 范圍的限制。 這是限制時特別有用 指定變量。
從機器人2.8.7框架,可以使用浮點值 下限,上限和步驟。
*** Test Cases *** Only upper limit [Documentation] Loops over values from 0 to 9 :FOR ${index} IN RANGE 10 \ Log ${index} Start and end [Documentation] Loops over values from 1 to 10 :FOR ${index} IN RANGE 1 11 \ Log ${index} Also step given [Documentation] Loops over values 5, 15, and 25 :FOR ${index} IN RANGE 5 26 10 \ Log ${index} Negative step [Documentation] Loops over values 13, 3, and -7 :FOR ${index} IN RANGE 13 -13 -10 \ Log ${index} Arithmetics [Documentation] Arithmetics with variable :FOR ${index} IN RANGE ${var}+1 \ Log ${index} Float parameters [Documentation] Loops over values 3.14, 4.34, and 5.34 :FOR ${index} IN RANGE 3.14 6.09 1.2 \ Log ${index}
For-in-enumerate循環
有時是有用的遍歷一個列表並跟蹤你的位置 在列表中。 有一個特殊的機器人框架 指數… 在列舉……
這種情況下的語法。 這個語法是派生的 Python的內置函數 。
For-in-enumerate循環工作就像常規的for循環, 除了細胞循環變量后必須說 在列舉
, 他們必須有一個額外的索引變量之前其他循環變量。 索引變量的值 0
第一次迭代, 1
為 第二,等等。
例如,下面的兩個測試用例做同樣的事情:
*** Variables *** @{LIST} a b c *** Test Cases *** Manage index manually ${index} = Set Variable -1 : FOR ${item} IN @{LIST} \ ${index} = Evaluate ${index} + 1 \ My Keyword ${index} ${item} For-in-enumerate : FOR ${index} ${item} IN ENUMERATE @{LIST} \ My Keyword ${index} ${item}
就像普通的for循環,你可以每循環遍歷多個值 迭代只要值的數量在你的列表是整除 循環變量的數量(不含第一、索引變量)。
*** Test Case *** For-in-enumerate with two values per iteration :FOR ${index} ${english} ${finnish} IN ENUMERATE ... cat kissa ... dog koira ... horse hevonen \ Add to dictionary ${english} ${finnish} ${index}
2.9 For-in-enumerate循環在機器人的新框架。
For-in-zip循環
一些測試建立幾個相關的列表,然后循環起來。 這種情況下機器人框架有一個快捷方式: 為… 在郵政…
,這 來源於 Python內置zip函數 。
這可能是最簡單的,展示了一個例子:
*** Variables *** @{NUMBERS} ${1} ${2} ${5} @{NAMES} one two five *** Test Cases *** Iterate over two lists manually ${length}= Get Length ${NUMBERS} : FOR ${idx} IN RANGE ${length} \ Number Should Be Named ${NUMBERS}[${idx}] ${NAMES}[${idx}] For-in-zip : FOR ${number} ${name} IN ZIP ${NUMBERS} ${NAMES} \ Number Should Be Named ${number} ${name}
同樣for-in-range和for-in-enumerate循環,for-in-zip循環要求 循環變量后的細胞來讀 在郵政
。
值使用for-in-zip循環必須列表或類似物體,和 必須有相同數量的循環變量列表循環。 循環 將停止在最短的列表為空。
請注意任何列表使用for-in-zip通常應該給出 標量 變量 就像 $ { }列表
。 一個 變量列表 只適用的項目 本身是列表。
2.9 For-in-zip循環在機器人的新框架。
退出循環
通常執行循環直到所有循環值迭代 或關鍵字使用內循環失敗。 如果需要退出循環 早些時候, 內裝式 關鍵字 退出循環 和 退出循環如果 可以用來完成。 他們同樣工作 打破
聲明在Python中,Java,和許多其他的編程語言。
退出循環 和 退出循環如果 可以使用關鍵字 直接在for循環或循環使用的關鍵字。 在這兩種情況下 測試執行后繼續循環。 這是一個錯誤使用這些關鍵字 外一個for循環。
*** Test Cases *** Exit Example ${text} = Set Variable ${EMPTY} :FOR ${var} IN one two \ Run Keyword If '${var}' == 'two' Exit For Loop \ ${text} = Set Variable ${text}${var} Should Be Equal ${text} one
在上面的例子中可以使用 退出循環如果 而不是使用 退出循環 與 運行關鍵字如果 。 關於這些關鍵詞的更多信息,包括更多的用法示例, 看到他們的文檔 內裝式 圖書館。
請注意
退出循環如果 2.8關鍵字添加機器人框架。
繼續循環
除了過早退出一個for循環,也可以 繼續下一個迭代循環之前所有的關鍵詞 執行。 這可以通過使用 內裝式 關鍵字 持續循環 和 持續循環如果 這工作 繼續
聲明 在許多編程語言。
持續循環 和 持續循環如果 可以使用關鍵字 直接在for循環或循環使用的關鍵字。 在這兩種情況下 其他關鍵詞,迭代是跳過和執行仍在繼續 從下一次迭代。 如果使用這些關鍵字在最后迭代, 執行后繼續循環。 這是一個錯誤使用這些關鍵字 外一個for循環。
*** Test Cases *** Continue Example ${text} = Set Variable ${EMPTY} :FOR ${var} IN one two three \ Continue For Loop If '${var}' == 'two' \ ${text} = Set Variable ${text}${var} Should Be Equal ${text} onethree
關於這些關鍵字的更多信息,包括用法示例,看到他們 文檔的 內裝式 圖書館。
請注意
這兩個 持續循環 和 持續循環如果 被添加在機器人框架2.8。
從輸出刪除不必要的關鍵詞
For循環經常創建大量的輸出,與多個迭代 大大增加生成的大小 輸出 和 日志 文件。 從機器人Framework 2.7,它是可能的 刪除不必要的 關鍵字 從輸出使用 ——RemoveKeywords 命令行 選擇。
重復單一的關鍵詞
For循環可以過度的情況下只有一個需要 重復一個字。 在這些情況下,往往更容易使用 內裝式 關鍵字 重復的關鍵字 。 這個關鍵字了 關鍵字和重復多少次它作為參數。 重復關鍵字可以有一個可選的后綴 次
或 x
使語法更容易閱讀。
*** Test Cases *** Example Repeat Keyword 5 Some Keyword arg1 arg2 Repeat Keyword 42 times My Keyword Repeat Keyword ${var} Another Keyword argument
條件執行
在一般情況下,不建議有條件邏輯測試 情況下,甚至在用戶關鍵字,因為它可以使他們很難 理解和維護。 相反,應該在測試這種邏輯 庫,它可以使用自然的編程實現 語言結構。 然而,一些條件邏輯可能是有用的 次,即使機器人框架沒有一個實際的if / else 構造,有幾種方法可以達到同樣的效果。
- 關鍵字的名稱用作安裝或拆卸 測試 情況下 和 測試套件 可以指定使用嗎 變量。 這有助於改變它們,例如,從 命令行。
- 的 內裝式 關鍵字 運行關鍵字 需要一個關鍵字 執行作為參數,它可以是一個變量。 的價值 變量可以,例如,從較早的動態 關鍵字或從命令行。
- 的 內裝式 關鍵字 運行關鍵字如果 和 運行關鍵字 除非 執行一個名為關鍵字只有一個特定的表達式 分別為真或假。 他們是適合創建 簡單的if / else結構。 例如,看到的文檔 前者。
- 另一個 內裝式 關鍵字, 設置變量如果 ,可用於設置 根據給定的動態變量表達式。
- 有幾個 內裝式 關鍵字允許執行一個命名 關鍵字只有一個測試用例或者測試套件沒有通過。
並行執行的關鍵字
當需要並行執行時,它必須在測試庫中實現的 水平,library在背景上執行代碼。 這通常 意味着library需要一個關鍵字 開始的東西 那 立即開始執行並返回,另一個關鍵字 得到的結果等到結果是可用的 並返回它。 看到 操作 庫關鍵字 啟動過程 和 讀取過程輸出 了一個例子。