配置執行
選擇測試用例
機器人框架提供了幾個選擇的命令行選項 執行測試用例。 也工作在相同的選項 后處理輸出與 Rebot 。
通過測試套件和測試用例的名稱
測試套件和測試用例可以選擇通過他們的名字的命令 行選項 ——套件(- s) 和 ——測試(- t) , 分別。 這兩個選項可以多次使用 選擇幾個測試套件或案例。 這些選項的參數 情況下,space-insensitive也可以 簡單的 模式 匹配多個名字。 如果 ——套件 和 ——測試 選項,只在匹配的測試用例套件 選擇匹配的名稱。
--test Example --test mytest --test yourtest --test example* --test mysuite.mytest --test *.suite.mytest --suite example-?? --suite mysuite --test mytest --test your*
使用 ——套件 選擇是或多或少一樣執行 適當的測試用例文件或目錄。 一個主要的好處是 可能選擇套件基於母公司套件。 的語法 父母和孩子是指定的套件名稱分開 一個點。 在這種情況下,可能的setup和teardown父母 套件執行。
--suite parent.child --suite myhouse.myhousemusic --test jack*
選擇單個測試用例的 ——測試 選擇是非常 實際在創建測試用例,但運行測試時相當有限 自動。 的 ——套件 選項可能是有用的 情況下,但總的來說,選擇測試用例通過標記名稱 靈活。
通過標簽名稱
有可能包括和排除測試用例 標簽 名字的 ——包括(我) 和 ——排除(e) 選項,分別。 如果 ——包括 選擇使用,只有測試用例有一個匹配 選擇標簽, ——排除 有一個選擇測試用例 匹配的標記。 如果使用了兩個,只測試一個標簽 匹配前的選擇,而不是一個標簽匹配的后者, 被選中。
--include example --exclude not_ready --include regression --exclude long_lasting
這兩個 ——包括 和 ——排除 可以使用幾個 次匹配多個標簽。 在這種情況下一個測試被選中 如果它有一個標簽匹配任何包含標記,也沒有標簽 匹配任何排除標簽。
除了指定標簽完全匹配,可以使用 標記模式 在哪里 * 和 嗎? 通配符, 和 , 或 , 不 運營商可用於 結合個人標簽或模式:
--include feature-4? --exclude bug* --include fooANDbar --exclude xxORyyORzz --include fooNOTbar
選擇測試用例,標記是一種非常靈活的機制,允許 許多有趣的可能性:
- 測試之前執行其他測試的子集,通常被稱為煙霧 測試,可以標記
煙和執行——包括煙。 - 未完成的測試可以致力於與一個標簽版本控制等
not_ready和排除在測試執行——排除not_ready。 - 測試可以標記
sprint——< num >,在那里< num >指定當前sprint的數量 執行所有的測試用例后,只包含一個單獨的報告 可以生成某個sprint的測試(例如,rebot ——包括sprint-42 output.xml)。
重新執行失敗的測試用例
命令行選項 ——rerunfailed(- r) 可以用來選擇所有失敗了 測試從早期 輸出文件 re-execution。 這個選項是有用的, 例如,如果運行所有測試需要很長時間和一個希望 迭代修復失敗的測試用例。
robot tests # first execute all tests robot --rerunfailed output.xml tests # then re-execute failing
幕后這個選項選擇的失敗的測試 選擇單獨的 ——測試 選擇。 進一步是可能的 通過使用微調的列表選擇測試 ——測試 , ——套件 , ——包括 和 ——排除 選項。
使用一個輸出不是來自執行相同的測試運行 現在造成未定義的結果。 此外,這是一個錯誤如果輸出 不包含任何失敗的測試。 使用一種特殊的價值 沒有一個 作為輸出 一樣是不指定這個選項。
提示
Re-execution結果和原始結果 合並在一起 使用 ——合並 命令行選項。
請注意
重新執行失敗的測試是機器人Framework 2.8中的一個新特性。 之前被任命為機器人框架2.8.4選項 ——runfailed 。 舊的名字仍然有效,但是它在未來將被刪除。
當沒有測試匹配選擇
默認情況下在沒有測試匹配選擇條件測試執行失敗 這樣的一個錯誤:
[ ERROR ] Suite 'Example' with includes 'xxx' contains no test cases.
因為沒有輸出是生成的,這種行為可以有問題如果測試 自動執行和結果處理。 幸運的是一個命令行 選項 ——RunEmptySuite 可用於套件執行力 在這種情況下。 結果正常輸出創建但顯示零 執行測試。 可以使用相同的選項也改變了行為 一個空的目錄或文件不含測試執行測試用例。
類似的情況也發生在處理輸出文件 Rebot 。 有可能是沒有測試匹配過濾標准或使用 輸出文件中不含測試開始。 默認情況下執行 沒有室內可容納在這些情況下,但它有一個單獨的——ProcessEmptySuite 選項,可以用來改變行為。 在實踐中該選項一樣工作 ——RunEmptySuite 當 運行測試。
請注意
——ProcessEmptySuite 2.7.2選項添加機器人框架。
設定臨界
測試執行的最終結果是基於確定的 關鍵的測試。 如果一個關鍵的測試失敗,整個測試運行 被認為是失敗了。 另一方面,非關鍵的測試用例 失敗,總體狀況仍被視為通過。
所有測試用例被認為是關鍵的默認,但這可以改變 與 ——關鍵(- c) 和 ——被(- n) 選項。 這些選項指定哪些測試是至關重要的 基於 標簽 類似地, ——包括 和 ——排除 是用來 通過標簽來選擇測試 。 如果只有 ——關鍵 ,與一個測試用例 匹配標簽是至關重要的。 如果只有 ——被 使用, 測試沒有一個匹配的標記是至關重要的。 最后,如果兩者都是 使用,只測試一個關鍵標記但是沒有一個非關鍵標記 至關重要的。
這兩個 ——關鍵 和 ——被 同樣也支持 標簽 模式 作為 ——包括 和 ——排除 。 這意味着模式 匹配的情況下,空間,強調不敏感, * 和 嗎? 支持通配符, 和 , 或 和 不 運營商可以用來創建相結合的模式。
--critical regression --noncritical not_ready --critical iter-* --critical req-* --noncritical req-6??
最常見的用例設置臨界測試用例 沒有准備好或測試功能仍在發展 測試執行。 這些測試也可以排除在外 測試執行的 ——排除 選擇,但 包括非關鍵測試使您能夠看到 他們開始通過。
測試時臨界集 沒有存儲任何地方執行。 如果你想保持相同的臨界 當 后處理輸出 用,室內可容納你需要 使用 ——關鍵 和/或 ——被 還用它:
# Use rebot to create new log and report from the output created during execution robot --critical regression --outputdir all tests.robot 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 robot --log NONE --report NONE tests.robot rebot --critical feature1 output.xml
設置元數據
設置名稱
當機器人框架分析測試數據, 創建測試套件的名稱 從文件和目錄的名稱 。 頂級測試套件的名稱 然而,可以被覆蓋命令行選項 ——名稱(- n) 。 強調了在給定的名稱轉換為 自動空間,和文字的名字大寫。
設置文檔
除了 定義文檔的測試數據 、文檔 的頂級套房可以從命令行得到 選項 ——醫生(- d) 。 強調了在給定的文檔 轉換為空間,它可能包含簡單嗎 HTML格式 。
設置免費的元數據
免費測試套件的元數據 也可以從命令行得到的嗎 選項 ——元數據(- m) 。 參數必須在格式 名稱:值 ,在那里 的名字 元數據集的名稱 價值 是它的價值。 名稱和值轉換為下划線 空間,后者可能包含簡單 HTML格式 。 這個選項可以 使用幾次設置多個元數據。
配置在哪里搜索庫和其他擴展
當機器人框架進口 測試庫 , 偵聽器 或其他 基於Python的擴展,它使用Python解釋器模塊導入 從系統包含擴展。 位置模塊的列表 尋找的是叫什么 該模塊搜索路徑 ,其內容可以 使用不同的配置方法在這一節中解釋。 當導入Java庫或者其他擴展基於Jython,Java 類路徑使用除了正常的模塊搜索路徑。
機器人框架使用Python的模塊搜索路徑也在導入 資源 和變量文件 如果指定的路徑不直接匹配任何文件。
該模塊搜索路徑設置正確,以便庫和其他 擴展是一個要求成功的測試執行。 如果 你需要定制它使用下面的方法解釋說,這是經常 要創建一個自定義一個好主意 啟動腳本 。
位置自動模塊搜索路徑
Python解釋器有自己的標准庫以及一個目錄 第三方模塊是自動安裝的模塊搜索 路徑。 這意味着測試庫 包裝使用Python的包裝 系統 會自動安裝,這樣就可以進口的沒有 任何額外的配置。
PYTHONPATH環境 , JYTHONPATH 和 IRONPYTHONPATH
Python,Jython和IronPython閱讀額外的位置添加到 該模塊搜索路徑 PYTHONPATH環境 , JYTHONPATH 和 IRONPYTHONPATH 環境變量,分別。 如果你想 指定多個位置在其中任何一個,你需要分開 冒號在類unix機器上的位置(如。 / opt / libs:$ HOME / testlibs )和Windows上的分號(如 D:\ libs % HOMEPATH % \ testlibs )。
環境變量可以永久系統范圍或者配置 他們只影響一個特定的用戶。 或者他們可以暫時設置 在運行一個命令之前,在自定義的東西非常好用 啟動腳本 。
請注意
機器人Framework 2.9,之前的內容 PYTHONPATH環境 環境 變量被添加到模塊搜索路徑框架本身 當運行在Jython和IronPython。 現在不做 了, JYTHONPATH 和 IRONPYTHONPATH 必須使用 這些翻譯。
使用 ——pythonpath環境 選項
機器人框架有一個單獨的命令行選項 ——pythonpath(- p) 將位置添加到模塊搜索路徑。 雖然選項名稱 Python這個詞,它的工作原理也在Jython和IronPython。
可以由多個位置用冒號分隔他們,不管 操作系統,或者多次使用這個選項。 給定的路徑 也可以是一團模式匹配多個路徑,但它通常 需要 逃了出來 。
例子:
--pythonpath libs --pythonpath /opt/testlibs:mylibs.zip:yourlibs --pythonpath mylib.jar --pythonpath lib/STAR.jar --escape star:STAR
配置 sys.path 以編程方式
Python解釋器將他們使用的模塊搜索路徑存儲為字符串的列表 在 sys.path 屬性。 在執行這個列表可以動態更新,更改 考慮下次進口。
Java類路徑
當庫中實現Java與Jython進口,他們可以 在Jython中正常的模塊搜索路徑或 Java類路徑 。 最 常見的方式來改變路徑的設置 類路徑 環境變量 同樣作為 PYTHONPATH環境 , JYTHONPATH或 IRONPYTHONPATH 。 或者可以使用Java的 - cp 命令行選項。 這個選項不接觸 機器人 跑腳本 ,但這是 可以使用Jython通過添加 - j 前綴像 jython -J-cp例子。 jar - m機器人。 運行tests.robot 。
使用獨立的JAR分布時,類路徑中必須設置一個 有些不同,由於這一事實 java jar 命令不支持 的 類路徑 環境變量和 - cp 選擇。 有 兩種不同的方式來配置類路徑:
java -cp lib/testlibrary.jar:lib/app.jar:robotframework-2.9.jar org.robotframework.RobotFramework tests.robot java -Xbootclasspath/a:lib/testlibrary.jar:lib/app.jar -jar robotframework-2.9.jar tests.robot
設置變量
變量 可以從命令行設置 單獨 使用 ——變量(- 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
排練
機器人框架支持所謂的 排練 測試模式 正常運行,但關鍵字來自測試庫 不執行。 干燥的運行模式可用於驗證 測試數據,如果干運行通過,數據應該是語法 正確的。 這個模式使用觸發選項 ——dryrun 。
演習執行可能會失敗,有以下原因:
- 沒有發現使用關鍵字。
- 使用關鍵字與錯誤的數量的參數。
- 使用用戶關鍵字無效語法。
除了這些失敗,正常 執行錯誤 所示, 例如,當測試庫或資源文件不能進口 解決。
請注意
干燥的運行模式不驗證變量。 這 限制可能在將來的版本中取消。
隨機的執行順序
測試執行的順序可以隨機選擇 ——隨機<什么>(<種子>): ,在那里 <什么> 是下列之一:
-
測試 - 測試用例在每個測試套件以隨機的順序執行。
-
套房 - 所有測試套件執行在一個隨機的順序,但里面的測試用例 套件運行的順序定義。
-
所有 - 測試用例和測試套件都以隨機的順序執行。
-
沒有一個 - 測試的執行順序和套房都不是隨機的。 這個值可以用來覆蓋前面的值集 ——隨機 。
從機器人2.8.5框架,它可以給一個定制的種子 初始化隨機發生器。 這是非常有用的,如果你想重新運行測試 使用相同的順序。 種子作為價值的一部分 ——隨機 在格式 < >:<種子> 它必須是一個整數。 如果沒有種子,它是隨機生成的。 頂級執行測試 套件自動獲得 元數據 命名 隨機 告訴兩個 什么是隨機的,種子被使用。
例子:
robot --randomize tests my_test.robot robot --randomize all:12345 path/to/tests
編程修改測試數據
如果提供的內置功能修改測試數據之前執行 是不夠的,機器人框架2.9和更新提供了一個可以做什么 自定義編程方式修改。 這是通過創建完成 模型修改器,使用激活它——prerunmodifier 選擇。
模型修改器應該能夠遍歷實現為游客 可執行測試套件結構並根據需要修改它。 訪問者 接口的一部分解釋 機器人框架API文檔 ,它可能改變執行 測試套件 , 測試用例 和 關鍵字 使用它。 下面的示例應該給一個想法 如何使用模型修改器,這個功能是多么強大。
from robot.api import SuiteVisitor class SelectEveryXthTest(SuiteVisitor): """Visitor that keeps only every Xth test in the visited suite structure.""" def __init__(self, x, start=0): self.x = int(x) self.start = int(start) def start_suite(self, suite): """Modify suite's tests to contain only every Xth.""" suite.tests = suite.tests[self.start::self.x] def end_suite(self, suite): """Remove suites that are empty after removing tests.""" suite.suites = [s for s in suite.suites if s.test_count > 0] def visit_test(self, test): """Save time to avoid visiting tests and their keywords.""" pass
當模型修改器使用在命令行上使用 ——prerunmodifier 選項,它可以指定的名稱 修飾符修飾符的類或路徑文件。 如果修飾符 作為一個類名,必須在包含類的模塊 模塊搜索 路徑 ,如果模塊名稱和類名不同,給定的 名稱必須包括 module.ModifierClass 。 如果修飾符 路徑,類名必須與文件名相同。 這對於大多數部分 工作就像當 指定一個測試庫導入 。
如果一個修飾詞需要參數,就像上面的例子一樣,他們可以 后修飾符指定的名稱或路徑使用冒號( : )或 分號( ; )作為分隔符。 如果兩個值中使用,一分之一 被認為是實際的分離器。
例如,如果上面的模型修改器可以在一個文件中 SelectEveryXthTest.py ,它可以是這樣的:
# Specify the modifier as a path. Run every second test. robot --prerunmodifier path/to/SelectEveryXthTest.py:2 tests.robot # Specify the modifier as a name. Run every third test, starting from the second. # SelectEveryXthTest.py must be in the module search path. robot --prerunmodifier SelectEveryXthTest:3:1 tests.robot
如果需要多個模型修改器,他們可以通過使用指定 的 ——prerunmodifier 多次選擇。 如果類似的修改 需要在創建結果之前, 編程式的修改結果 可以使用嗎 ——prerebotmodifier 選擇。
控制控制台輸出
有各種各樣的命令行選項來控制測試的執行 在控制台上。
控制台輸出類型
整個控制台輸出類型設置的 ——控制台 選擇。 它支持以下不區分大小寫的值:
-
詳細的 - 每一個測試套件和測試用例單獨報告。 這是 默認值。
-
虛線 -
只顯示
。通過測試,f對於非關鍵失敗測試,F對失敗的關鍵測試,x跳過,因為測試 測試執行退出 。 失敗的關鍵測試單獨列出 后執行。 這個輸出類型很容易看到有什么 失敗在執行期間,即使會有很多測試。 -
安靜的 - 沒有輸出,除了 錯誤和警告 。
-
沒有一個 - 沒有任何輸出。 當創建一個自定義輸出使用有用, 例如, 聽眾 。
單獨的方便選擇 ——點(-)。 和 ——安靜 的快捷鍵 ——控制台點綴 和 ——控制台安靜 ,分別。
例子:
robot --console quiet tests.robot robot --dotted tests.robot
請注意
——控制台 , ——點綴 和 ——安靜 在機器人Framework 2.9新選項。 在此之前輸出 總是在當前的一樣嗎 詳細的 模式。
控制台寬度
測試執行的寬度可以使用設置在控制台輸出 的選項 ——consolewidth(- w) 。 默認的寬度是78個字符。
提示
在許多類unix機器可以使用方便 美元列 環境變量如 ——consolewidth美元列 。
請注意
機器人框架2.9之前這個功能被啟用 ——monitorwidth 選項,第一次被棄用, 現在刪除。 簡單的選擇 - w 以同樣的方式工作 在所有版本。
控制台的顏色
的 ——consolecolors(- c) 選項用於控制是否 顏色應該使用控制台輸出。 顏色是實現 使用 ANSI顏色 除了在Windows上,默認情況下,窗口 使用api。 從Jython訪問這些api是不可能的, 因此顏色不使用Jython在Windows。
該選項支持以下不區分大小寫的價值觀:
-
汽車 - 顏色時啟用輸出寫入控制台,但不是 當他們被重定向到一個文件中或其他地方。 這是默認的。
-
在 - 使用顏色也當輸出重定向。 在Windows上不工作。
-
ansi -
一樣
在但使用ANSI顏色也在Windows。 有用的,例如, 當重定向輸出到一個程序理解ANSI顏色。 2.7.5新機器人框架。 -
從 - 顏色是禁用的。
請注意
機器人框架2.9之前這個功能被啟用 ——monitorcolors 選項,第一次被棄用, 現在刪除。 簡單的選擇 - c 以同樣的方式工作 在所有版本。
控制台標記
從機器人Framework 2.7,特殊的標記 。 (成功), F (失敗)使用時顯示在控制台上 詳細輸出 和頂級關鍵詞測試用例結束。 標記允許后 高水平的測試執行,測試用例結束時抹去。
從機器人第2.7.4框架,可以配置標記 是使用 ——consolemarkers(- k) 選擇。 它支持以下 不區分大小寫的價值觀:
-
汽車 - 標記寫入標准輸出時啟用控制台, 但當它被重定向到一個文件中或其他地方。 這是默認的。
-
在 - 標記總是使用。
-
從 - 標記是被禁用的。
請注意
機器人框架2.9之前這個功能被啟用 ——monitormarkers 選項,第一次被棄用, 現在刪除。 簡單的選擇 - k 以同樣的方式工作 在所有版本。
設置監聽器
可以用來監控測試執行。 當他們進入 使用從命令行,他們指定使用 ——偵聽器 命令行選項。 的值可以是一個路徑或一個偵聽器 一個偵聽器的名字。 看到 監聽器接口 為更多的細節部分 關於進口的聽眾和使用它們。
