3.4配置執行
本節介紹可用於配置測試執行或后處理輸出的不同命令行選項。與生成的輸出文件相關的選項將在下一節中討論。
3.4.1選擇測試用例
Robot Framework提供了幾個命令行選項,用於選擇要執行的測試用例。使用rebot工具后處理輸出時,相同的選項也有效。
通過測試套件和測試用例名稱
可以使用命令行選項--suite(-s)和--test(-t)分別按名稱選擇測試套件和測試用例。這兩個選項都可以多次使用,以選擇多個測試套件或案例。這些選項的參數是區分大小寫和空格不敏感的,並且還可以有匹配多個名稱的簡單模式。如果同時使用--suite和 --test選項,則僅選擇匹配套件中具有匹配名稱的測試用例。
--test Example --test mytest --test yourtest --test example* --test mysuite.mytest --test *.suite.mytest --suite example-?? --suite mysuite --test mytest --test your*
注意
使用長名稱(例如mysuite.mytest)選擇測試用例與Robot Framework 2.5.6及更高版本一起使用。
使用--suite選項或多或少與僅執行適當的測試用例文件或目錄相同。一個主要的好處是可以根據其父套件選擇套件。其語法是指定用點分隔的父套件和子套件名稱。在這種情況下,執行父套件的可能設置和拆除。
--suite parent.child --suite myhouse.myhousemusic --test jack*
在創建測試用例時,使用--test選項選擇單個測試用例非常實用,但在自動運行測試時非常有限。在這種情況下,-- suite選項很有用,但通常,按標記名稱選擇測試用例更靈活。
按標簽名稱
可以使用--include(-i)和--exclude(-e)選項分別按標記名稱 包含和排除測試用例。當使用前者時,僅選擇具有匹配標簽的測試用例,而對於后者,具有匹配標簽的測試用例不被選擇。如果兩者都使用,則僅選擇具有與前一選項匹配的標簽的測試,而不選擇與后者匹配的標簽。
--include example --exclude not_ready --include regression --exclude long_lasting
無論--include和--exclude可以多次使用,以匹配多個標簽,以及它們的參數可以是簡單的模式。在這些情況下,選擇測試用例的規則適用,因此選擇具有與任何包含模式匹配的標記的測試用例,並且不使用匹配排除模式的標記進行測試。通過使用&或 AND(區分大小寫)分隔標記,也可以僅選擇具有兩個或更多指定標記的測試用例。從Robot Framework 2.1.3開始,只能通過用NOT(區分大小寫)分隔這些標記來選擇具有特定標記但沒有任何其他標記的測試。如果任何模式之間的多個 NOT 匹配,未選擇測試用例。
--include req-* --include regressionANDiter-42 --include tag1&tag2&tag3&tag4 --exclude regressionNOTowner-* --include tag1NOTtag2NOTtag3&tag4 (includes tests which have `tag1`, but not tests which additionally have `tag2` or both tags `tag3` and `tag4`)
通過標簽選擇測試用例是一種非常靈活的機制,允許許多有趣的可能性:
- 在其他測試之前執行的測試子集可以使用smoke標記並使用--include smoke執行。
- 未完成的測試可以使用標記not_ready提交到版本控制, 並使用--exclude not_ready從測試執行中排除 。
- 可以使用iter- <num>標記測試,其中 <num>指定當前迭代的編號,並且在執行所有測試用例之后,可以生成僅包含特定迭代的測試的單獨報告(例如,rebot - -include iter-42 output.xml)。
當沒有測試匹配選擇時
默認情況下,當沒有測試與選擇條件匹配時,測試執行失敗並出現如下錯誤:
[ ERROR ] Suite 'Example' with includes 'xxx' contains no test cases.
由於未生成任何輸出,因此如果執行測試並自動處理結果,則此行為可能會出現問題。幸運的是,在這種情況下,命令行選項--RunEmptySuite可用於強制執行套件。結果,創建了正常輸出但顯示零執行測試。當執行不包含測試的空目錄或測試用例文件時,也可以使用相同的選項來更改行為。
使用rebot處理輸出文件時也會發生類似情況。可能沒有測試與使用的過濾條件匹配,或者輸出文件不包含任何測試。默認執行 情況下,在這些情況 rebot失敗,但它有一個單獨的 --ProcessEmptySuite選項,可用於更改行為。在實踐中,此選項與運行測試時的--RunEmptySuite的工作方式相同。
注意
--RunEmptySuite選項在2.7.2中添加了Robot Framework 2.6和--ProcessEmptySuite。
3.4.2設置關鍵性
測試執行的最終結果是在關鍵測試的基礎上確定的。如果單個關鍵測試失敗,則認為整個測試運行失敗。另一方面,非關鍵測試用例可能會失敗,整體狀態仍然會通過。
默認情況下,所有測試用例都很關鍵,但可以使用--critical(-c)和--noncritical(-n) 選項進行更改。這些選項根據標記指定哪些測試用例被認為是關鍵的,類似於--include和 --exclude用於按標記名稱選擇測試用例。如果僅使用--critical,則具有匹配標記的測試用例至關重要。如果僅使用--noncritical,則沒有匹配標記的測試至關重要。最后,如果兩者都使用,則僅使用關鍵標簽進行測試但沒有非關鍵標簽被認為是關鍵的。這兩個選項都接受簡單的模式 ,可以多次給出:
--critical regression --noncritical not_ready --critical iter-* --critical req-* --noncritical req-6??
設置關鍵性的最常見用例是在測試執行中還沒有准備好測試用例或測試功能仍在開發中。當然,這些測試可以通過--exclude選項完全排除在測試執行之外,但是將它們包括在非關鍵測試中可以讓您看到它們何時開始通過。
從Robot Framework 2.1開始,執行測試時的關鍵性設置不會存儲在任何地方。如果你想保持相同的臨界時,處理后的輸出與rebot,你需要使用--critical和/或--noncritical也與它:
# Use rebot to create new log and report from the output created during execution pybot --critical regression --outputdir all my_tests.html rebot --name Smoke --include smoke --critical regression --outputdir smoke all/output.xml # No need to use --critical/--noncritical when no log or report is created jybot --log NONE --report NONE my_tests.html rebot --critical feature1 output.xml
3.4.3設置元數據
設置名稱
當Robot Framework分析測試數據時,將根據文件名和目錄名創建測試套件名稱。但是,可以使用命令行選項--name(-N)覆蓋頂級測試套件的名稱 。給定名稱中的下划線自動轉換為空格,名稱中的單詞大寫。
設置文檔
除了在測試數據中定義文檔之外,還可以從命令行使用選項--doc(-D)給出頂級套件的文檔。給定文檔中的下划線轉換為空格,並且可能包含簡單的HTML格式。
設置免費元數據
也可以從命令行使用選項--metadata(-M)給出免費的測試套件元數據。參數必須采用格式 name:value,其中name是要設置的元數據的名稱, value是其值。名稱和值中的下划線轉換為空格,后者可能包含簡單的HTML格式。可以多次使用此選項來設置多個元數據。
3.4.4調整庫搜索路徑
當使用測試庫時,Robot Framework使用Python或Jython解釋器從系統導入實現庫的模塊。搜索這些模塊的位置稱為PYTHONPATH,在Jython上運行測試或使用jar分發時,也使用Java CLASSPATH。
調整庫搜索路徑以便找到庫是成功執行測試的必要條件。除了查找測試庫之外,搜索路徑還用於查找在命令行上設置的偵聽器。有多種方法可以更改PYTHONPATH和CLASSPATH,但無論選擇哪種方法,都建議使用自定義啟動腳本。
PYTHONPATH中的位置自動
Python和Jython安裝會自動將自己的庫目錄放入PYTHONPATH。這意味着使用Python自己的打包系統打包的測試庫會自動安裝到庫搜索路徑中的位置。Robot Framework還將包含其標准庫的目錄和執行測試的目錄放入PYTHONPATH。
設置PYTHONPATH
有幾種方法可以改變系統中的PYTHONPATH,但最常見的方法是在測試執行之前設置一個具有相同名稱的環境變量。Jython實際上並不正常使用PYTHONPATH環境變量,但Robot Framework確保將其中列出的位置添加到庫搜索路徑中,而不管解釋器如何。
設置CLASSPATH
CLASSPATH與Jython一起使用或在使用獨立jar時使用。
使用Jython時,最常見的改變CLASSPATH的方法是設置一個與PYTHONPATH類似的環境變量。請注意,代替CLASSPATH,始終可以將PYTHONPATH與Jython一起使用,即使使用Java實現的庫和偵聽器也是如此。
使用獨立jar分發時,由於java -jar命令不讀取CLASSPATH環境變量,因此必須稍微設置CLASSPATH。在這種情況下,有兩種不同的方法來配置CLASSPATH,如下面的示例所示:
java -cp lib/testlibrary.jar:lib/app.jar:robotframework-2.7.1.jar org.robotframework.RobotFramework example.txt java -Xbootclasspath/a:lib/testlibrary.jar:lib/app.jar -jar robotframework-2.7.1.jar example.txt
使用--pythonpath選項
Robot Framework還有一個單獨的命令行選項 --pythonpath(-P),用於將目錄或歸檔添加到PYTHONPATH中。可以通過用冒號(:)或多次使用此選項分隔多個路徑。給定路徑也可以是匹配多個路徑的glob模式,但通常必須進行 轉義。
例子:
--pythonpath libs/ --pythonpath /opt/testlibs:mylibs.zip:yourlibs --pythonpath mylib.jar --pythonpath lib/STAR.jar --escape star:STAR
3.4.5設置變量
可以從命令行 使用--variable(-v)選項單獨設置變量,也可以通過 帶有--variablefile(-V)選項的變量文件設置變量。變量和變量文件在單獨的章節中進行了解釋,但以下示例說明了如何使用這些選項:
--variable name:value --variable OS:Linux --variable IP:10.0.0.42 --variablefile path/to/variables.py --variablefile myvars.py:possible:arguments:here --variable ENVIRONMENT:Windows --variablefile c:\resources\windows.py
3.4.6干運行
Robot Framework支持所謂的干運行模式,否則測試會正常運行,但來自測試庫的關鍵字根本不會執行。干運行模式可用於驗證測試數據; 如果干運行通過,數據應該在語法上正確。此模式使用選項--runmode DryRun (不區分大小寫)觸發,並且從Robot Framework 2.5開始支持。
由於以下原因,干運行執行可能會失敗:
- 使用未找到的關鍵字。
- 使用錯誤數量的參數的關鍵字。
- 使用語法無效的用戶關鍵字。
除了這些故障之外,還會顯示正常的執行錯誤,例如,無法解析測試庫或資源文件導入時。
注意
干運行模式不驗證變量。在將來的版本中可能會取消此限制。
3.4.7隨機化執行順序
該--runmode選項也可用於隨機測試執行順序。這是使用下面解釋的不同值完成的。
- 隨機:測試
- 每個測試套件中的測試用例以隨機順序執行。
- 隨機:套裝
- 所有測試套件都以隨機順序執行,但套件內的測試用例按照定義的順序運行。
- 隨機:所有
- 測試用例和測試套件都是以隨機順序執行的。
例:
pybot --runmode random:test my_test.txt
3.4.8控制控制台輸出
控制台寬度
可以使用選項--monitorwidth(-W)設置控制台中測試執行輸出的寬度。默認寬度為78個字符。
小費
在許多類UNIX機器上,你可以使用方便的$ COLUMNS 變量,如--monitorwidth $ COLUMNS。
控制台顏色
所述--monitorcolors(-C)選項用於控制是否顏色應在控制台輸出被使用。使用Jython時,顏色應該適用於除Windows之外的所有其他平台。此選項具有以下不區分大小寫的值:
- auto
- 輸出寫入控制台時啟用顏色,但重定向到文件時不啟用顏色。這是默認設置,很少需要更改它。
- on
- 輸出重定向到文件時也使用顏色。對Windows沒有影響。
- off
- 顏色被禁用。
- force
- 向后兼容Robot Framework 2.5.5及更早版本。不應該使用。
注意
支持Windows上的顏色和自動模式是Robot Framework 2.5.6中的新功能。
3.4.9設置監聽器
所謂的偵聽器可用於監視測試執行。它們與命令行選項 --listener一起使用,並且指定的偵聽器必須與模塊搜索路徑一樣,與測試庫類似。