1、變量的使用
變量可以在命令行中設置,個別變量設置使用--variable (-v)選項,變量文件的選擇使用--variablefile (-V)選項。
通過命令行設置的變量是全局變量,對其所有執行的用例都有效。它們將覆蓋變量表格中的同名變量或是
通過變量文件引入到測試數據中的同名變量。
設置單個變量的語法是--variable name:value, “name”是不使用${}的變量名稱, “value”則是其賦予的值。
可以多次使用該選項設置多個變量。僅有標量變量可以使用該語法且只能賦值字符串。許多特殊字符在命
令行中很難表示,但可以使用轉義字符轉義它們,使用—escape 選項。
--variable EXAMPLE:value
--variable HOST:localhost:7272 --variable USER:robot
--variable ESCAPED:Qquotes_and_spacesQ --escape quot:Q --escape space:_
在命令行中使用變量文件的基本語法是--variablefile path/to/variables.py
使用 Set Test Variable 創建的變量,可以在該測試用例范圍內的任何位置有效。例如,你在一個用戶關鍵字
中創建了變量,它將在測試用例級別有效及當前測試中的所有其他用戶自定義關鍵字中有效。其他測試用
例將看不到該變量。
使用 Set Suite Variable 創建的變量,可以在當前測試集范圍內的任何位置有效。使用該關鍵字創建變量同使
用測試數據文件的設置表格設置變量和引入變量文件相同。其他的關鍵字,包括可能的子測試集,都將不
能看到該關鍵字創建的變量。
使用 Set Global Variable keyword 創建的變量, 在所有測試用例和測試集中有效。 通過該關鍵字創建的變量同
使用命令行選項-variable 或—variablefile 創建的變量相同。因為該關鍵字可以在任何地方改變變量值,所有
需要小心使用
有效的操作系統內建變量
Variable Explanation
${CURDIR} 提供當前測試文件存放的絕對路徑。該變量是大小寫敏感的。
${TEMPDIR} 獲取操作系統臨時文件夾的絕對路徑。 在UNIX系統是在/tmp, 在windows系統是在c:\Documents and
Settings\<user>\Local Settings\Temp.
${EXECDIR} 獲取測試執行開始目錄的絕對路徑。該變量是在 Robot Framework2.1 新加的。
空格和空變量
可以使用${SPACE}和${EMPTY}創建空格和空變量。這些變量非常有用,否則需要使用反斜杠用於轉義空格或
空單元格。當需要使用多個空格時,可以使用該語法${SPACE*5}。如下面的例子,should be equal 使用了同
樣的參數,但使用該語法比使用反斜杠更簡單清晰。
一些自動變量可以在測試用例中使用。這些變量在執行時會有不同的值,並且他們不是在任何時候都是有
效的。
Variable Explanation Available
${TEST NAME} 獲取當前測試用例名稱 Test case
@{TEST TAGS} 包含當前測試集中的 tag,按字母排序 Test case
${TEST STATUS}
獲取當前測試用例的狀態,PASS 或 FAIL 中的一種。只能在測試用例
的 Teardown 中使用
Test
teardown
${TEST MESSAGE} 當前測試用例可能的錯誤信息。只能在測試用例的 Teardown 中使用
Test
teardown
Variable Explanation Available
${PREV TEST NAME} 前一個測試用例的名稱,或者為空字符串【當沒有任何測試用例執行
過】 。可以在任何地方使用
Everywhere
${PREV TEST
STATUS}
前一個測試用例的狀態,PASS,FAIL 或者未空字符串, 【當沒有任何
用例執行過】 。可以在任何地方使用
Everywhere
${PREV TEST
MESSAGE}
前一個測試用例可能的錯誤信息。可以在任何地方使用 Everywhere
${SUITE NAME} 當前測試集的全名稱。可以在任何地方使用。 Everywhere
${SUITE SOURCE}
測試集文件或目錄的絕對路徑,Robot Framework2.5 新增變量。可以
在任何地方使用。
Everywhere
${SUITE STATUS} 當前測試集的狀態, PASS 或 FAIL。只能在測試集的 teardown 中使用。
Suite
teardown
${SUITE MESSAGE} 測試集的所有消息,包括統計。只能在測試集的 teardown 中使用。
Suite
teardown
${OUTPUT FILE}
當前輸出文件的絕對路徑。當輸出文件被分割會有不同的值。可以在
任何地方使用。
Everywhere
${LOG FILE}
當前日志文件的絕對路徑或字符串 None【當沒有日志文件時】 。當輸
出被分割時,將可能有不同的值。
Everywhere
${REPORT FILE} 當前報告文件的絕對路徑或字符串 NONE【當沒有報告文件生成時】 。 Everywhere
${SUMMARY FILE} 摘要文件的絕對路徑或字符串 NONE【當沒有摘要文件時】 。 Everywhere
${DEBUG FILE} 調試文件的絕對路徑或字符串 NONE【當沒有調試文件時】 。 Everywhere
${OUTPUT DIR} 輸出目錄的絕對路徑 Everywhere
變量文件創建變量時,
創建列表變量,變量
名稱必須使用前綴LIST__(注意是兩個下划線)。LIST__STRINGS = ["list", "of", "strings"]
2、用例執行部分
指定測試數據執行
RF 的測試用例可以創建在文件或目錄中,在運行腳本后接需要執行用例的名文件名或路徑名。路徑可以是
絕對路徑,更普遍的是相對路徑。文件或目錄構成頂級測試集,該測試集如果沒有被--name option 所覆蓋,
它將使用文件或目錄名作為自己的名字。不同的執行情況將在下面的例子中說明。本章節中只有 pybot 被用
到,但 jybot 腳本的用法類似。
pybot test_cases.html
pybot path/to/my_tests/
pybot c:\robot\tests.txt
我們可以通過用空格分割來一次給出多個文件的路徑,來運行多個文件或目錄下的文件。RF 可以自動的產
生頂級的測試集, 具體的文件或目錄將變成它的子測試集。 產生的測試集的名稱將由子測試集的名字和 “&”
組成。例如下面的第一個例子中,頂級的測試集名稱為 My Tests & Your Tests。但是,有時自動產生的測試
集的名字將很長很復雜。通常,更好的做法是使用—name option 來覆蓋名稱,正如第二個例子所示:
pybot my_tests.html your_tests.html
pybot --name Example path/to/tests/pattern_*.html
使用參數
當使用參數時,參數必須位於運行腳本和源數據中間。例如:
pybot -L debug my_tests.txt
jybot --include smoke --variable HOST:10.0.0.42 path/to/tests/
設置參數值
大部分參數需要一個參數值, 位於參數名后面。 長參數和短參數都接受由空格分開的參數值, 例如: “--include
tag”或“-i tag” 。使用長參數時,可以將等號“=”作為分隔符,例如“--include=tag” ,使用短參數時,分
隔符可以省略,例如“-itag” 。
某些參數可以被具體賦值多次。例如, “--variable VAR1:value --variable VAR2:another”設置了兩個變量。如
果某個只有一個值的參數被賦值多次,則最后一次生效。
簡單正則表達式
很多參數后可接正則表達式的參數值。 “*”和“?”可替代具體的字符, “*”可匹配任何包括空值在內的
字符串, “?” 可以匹配任何單個字符。 例如: “--include prefix-*” 匹配所有以 “prefix-” 開頭的 tag, “--include
a???” 匹配所有以“a”開頭 4 個字符的 tag。
返回碼
運行腳本通過返回碼使所有測試用例的狀態和系統交互。如果所有的用例執行啟動成功而且沒有嚴重的失
敗,返回碼將是 0,所有可能的返回碼都列在下表中。
返回碼
用例執行完之后,很容易通過返回碼來確定所有用例執行的狀態。例如,在 bash shell 中,返回碼保存在具
體的變量“ $?”中,在 Windows 系統中,返回碼保存在變量% ERRORLEVEL %中。如果您使用外部的工
具來運行用例,請查詢相關的文檔來了解如何獲得返回值。
用例的啟動:
在第一個例子中,使用不同的瀏覽器做相同的 WEB 測試,並合並測試結果。使用 shell 腳本實現該功能就
非常簡單,只需要把需要使用到的命令逐行列出來。
#!/bin/bash
pybot --variable BROWSER:Firefox --name Firefox --log none --report none --output out/fx.xml login
pybot --variable BROWSER:IE --name IE --log none --report none --output out/ie.xml login
rebot --name Login --splitoutputs 1 --outputdir out --output login.xml out/fx.xml out/ie.xml
在 Windows 中使用批處理文件來實現上述功能也不是很復雜,有一點很重要,pybot 和 rebot 是由批處理文
件實現的,當運行其他批處理文件時,必須要使用 call。當第一個批處理文件結束時,測試也將結束。
@echo off
call pybot --variable BROWSER:Firefox --name Firefox --log none --report none --output out\fx.xml login
call pybot --variable BROWSER:IE --name IE --log none --report none --output out\ie.xml login
call rebot --name Login --splitoutputs 1 --outputdir out --output login.xml out\fx.xml out\ie.xml
執行測試集和測試用例
測試用例總是在某個測試集中執行。由目錄產生的測試集包含由測試用例文件或目錄組成的子測試集,由
測試用例文件組成的測試集直接包含測試用例。默認情況下,所有的測試用例都會執行,可以通過參數
“--test” 、 “--suite、 “--include”和“--exclude”來選擇用例執行。測試集中如果沒有用例,將不會執行。
RF 從頂級的測試集開始執行。如果測試集中包含用例,則順序執行。如果測試集中再包含測試集,則按照
深度優先的順序依次執行。當執行單個用例時,關鍵字按順序執行。通常用例中的任何一個關鍵字失敗了,
用例將停止執行,但是,我們可以做到讓失敗后繼續執行。接下來的章節中將具體介紹准確的執行順序和
setups 和 teardowns。