robotframework筆記20


配置執行

選擇測試用例

機器人框架提供了幾個選擇的命令行選項 執行測試用例。 也工作在相同的選項 后處理輸出與 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格式 。 這個選項可以 使用幾次設置多個元數據。

設置標簽

命令行選項 ——settag(g) 可用於設置 給定的標記所有執行測試用例。 可以使用這個選項 幾次設置多個標簽。

配置在哪里搜索庫和其他擴展

當機器人框架進口 測試庫 偵聽器 或其他 基於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 選擇。

控制控制台輸出

有各種各樣的命令行選項來控制測試的執行 在控制台上。

控制台輸出類型

整個控制台輸出類型設置的 ——控制台 選擇。 它支持以下不區分大小寫的值:

詳細的
每一個測試套件和測試用例單獨報告。 這是 默認值。
虛線
只顯示  。  通過測試,  對於非關鍵失敗測試,  對失敗的關鍵測試,  跳過,因為測試  測試執行退出  。 失敗的關鍵測試單獨列出 后執行。 這個輸出類型很容易看到有什么 失敗在執行期間,即使會有很多測試。
安靜的
沒有輸出,除了  錯誤和警告 
沒有一個
沒有任何輸出。 當創建一個自定義輸出使用有用, 例如,  聽眾 

單獨的方便選擇 ——點(-)。 和 ——安靜 的快捷鍵 ——控制台點綴 和 ——控制台安靜 ,分別。

例子:

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,特殊的標記 。 (成功), (失敗)使用時顯示在控制台上 詳細輸出 和頂級關鍵詞測試用例結束。 標記允許后 高水平的測試執行,測試用例結束時抹去。

從機器人第2.7.4框架,可以配置標記 是使用 ——consolemarkers(- k) 選擇。 它支持以下 不區分大小寫的價值觀:

汽車
標記寫入標准輸出時啟用控制台, 但當它被重定向到一個文件中或其他地方。 這是默認的。
標記總是使用。
標記是被禁用的。

請注意

機器人框架2.9之前這個功能被啟用 ——monitormarkers 選項,第一次被棄用, 現在刪除。 簡單的選擇 - k 以同樣的方式工作 在所有版本。

設置監聽器

可以用來監控測試執行。 當他們進入 使用從命令行,他們指定使用 ——偵聽器 命令行選項。 的值可以是一個路徑或一個偵聽器 一個偵聽器的名字。 看到 監聽器接口 為更多的細節部分 關於進口的聽眾和使用它們。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM