robotframework筆記2


文件和目錄

層次結構安排測試用例構建如下:

  • 在創建測試用例 測試用例文件 。
  • 自動創建一個測試用例文件 測試套件 包含 測試用例文件。
  • 一個目錄包含測試用例文件形成一個更高級別的測試 套件。 這樣一個 測試套件目錄 從測試套件創建 案例文件作為它的子測試套件。
  • 一個測試套件目錄也可以包含其他測試套件目錄, 這個層次結構可以根據需要深層嵌套的。
  • 測試套件可以有一個特殊的目錄 初始化文件 。

除此之外,還有:

  • 測試庫 包含體現關鍵詞。
  • 資源文件 與 變量 和高級 用戶的關鍵字 。
  • 變量的文件 提供更靈活的方式來創建變量 資源文件。

支持文件格式

機器人框架中定義的測試數據表格格式,使用 超文本標記語言(HTML),制表符分隔值(TSV), 純文本或reStructuredText(reST)格式。 這些的細節 格式,以及主要好處和問題,是解釋說 在隨后的部分。 使用哪種格式取決於上下文, 但純文本格式建議如果沒有特殊需求。

機器人框架選擇測試數據的解析器基於文件擴展名。 擴展是不區分大小寫的,公認的擴展 . html , . htm 和 名為. xhtml的 對於HTML, . tsv TSV, . txt 和特殊 .robot 為純文本首要 和 r 恰好。

不同的 測試數據模板 可用於HTML和TSV嗎 格式,讓它更容易開始編寫測試。

請注意

特殊的 .robot 擴展與純文本文件 支持從2.7.6機器人框架。

HTML格式

HTML文件格式和自由文本周圍的支持表。 這使它 可以添加額外的信息,允許創建測試用例文件 測試用例文件看起來像正式的測試規范。 最主要的問題 與HTML格式,使用普通文本編輯器編輯這些文件不是 那么容易。 另一個問題是,HTML與版本不工作 控制系統因為差別造成的變化包含HTML語法 除了更改實際的測試數據。

在HTML文件中,測試數據是在單獨的表(見定義的 在下面的例子)。 機器人框架承認這些 測試數據表 基於文本的第一個細胞。 一切外部認可 表將被忽略。

使用HTML格式
設置 價值 價值 價值
圖書館 操作
 
 
 
 
 
 
變量 價值 價值 價值
$ {信息} 你好,世界!
 
 
 
 
 
 
測試用例 行動 論點 論點
我的測試 (文檔) 示例測試
 
 
日志 $ {信息}
 
 
我的關鍵字 / tmp
 
 
 
 
 
另一項測試 應該是平等的 $ {信息} 你好,世界!
關鍵字 行動 論點 論點
我的關鍵字 (參數) $ { path }
 
 
目錄應該存在 $ { path }
 
編輯測試數據

測試數據可以用哪個編輯器來編輯您的HTML文件 喜歡,但是一個圖形編輯器,你可以看到表, 建議。 騎 能讀和寫HTML文件,但不幸的是嗎 外面失去所有HTML格式,也有可能數據測試用例 表。

編碼和實體引用

HTML實體引用(例如, ä ) 支持。 另外,可以使用任何編碼,它是假設 在數據文件中指定。 正常的HTML文件必須使用元 元素下面的例子:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

XHTML文件應該使用XML序言在這個例子:

<?xml version="1.0" encoding="Big5"?>

如果沒有指定編碼,機器人框架默認使用iso - 8859 - 1。

TSV格式

TSV文件可編輯電子表格程序,因為語法 如此簡單,它們很容易通過編程方式產生。 他們也很 容易使用普通文本編輯器來編輯和版本控制,都是他們的目標 但是, 純文本格式 更好的適合這些目的。

TSV格式可用於機器人框架的所有的測試數據 目的相同的HTML。 在TSV文件中,所有的數據都在一個大 表。 測試數據表 是公認的從一個或多個星號 ( ),其次是一個正常的表名和一個可選的關閉 星號。 第一個認可表之前的一切都忽略 同樣的數據在HTML表外數據。

使用TSV格式
*設置* *值* *值* *值*
圖書館 操作
 
 
 
 
 
 
 
 
 
 
*變量* *值* *值* *值*
$ {信息} 你好,世界!
 
 
 
 
 
 
 
 
 
 
*測試用例* *行動* *參數* *參數*
我的測試 (文檔) 示例測試
 
 
日志 $ {信息}
 
 
我的關鍵字 / tmp
 
 
 
 
 
另一項測試 應該是平等的 $ {信息} 你好,世界!
 
 
 
 
 
 
 
 
*關鍵字* *行動* *參數* *參數*
我的關鍵字 (參數) $ { path }
 
 
目錄應該存在 $ { path }
 
編輯測試數據

您可以創建和編輯TSV文件在任何電子表格程序,如 Microsoft Excel。 保存時選擇制表符分隔的格式 文件,記得將文件擴展名 . tsv 。 它是 也不失為一個好辦法關掉所有自動修正和配置 該工具將文件中所有的值視為純文本。

TSV文件相對容易與任何文本編輯器編輯, 特別是如果編輯器支持視覺分離標簽 空間。 TSV格式還支持 騎 。

機器人框架解析TSV數據首先分裂的所有內容 行,然后行進入細胞的基礎上表格 字符。 電子表格程序有時與引號包圍細胞 (例如, “我的價值” 刪除)和機器人框架 他們。 引號內的數據翻了一番(例如, “我”“引用”“價值” ),這是正確處理。 如果 您正在使用一個電子表格程序創建TSV數據,你不應該 需要注意這一點,但是如果你創建數據 通過編程,你必須遵循相同的引用公約 電子表格。

編碼

TSV文件總是預期使用utf - 8編碼。 因為ASCII是 utf - 8的子集,純ASCII自然是支持。

純文本格式

純文本格式很容易使用任何文本編輯器和編輯 他們也在版本控制工作很好。 因為這些好處 它已經成為最常用的數據格式與機器人框架。

純文本格式在技術上是否則相似 TSV 格式 但細胞之間的分隔符是不同的。 的TSV 格式使用標簽,但您可以使用兩個純文本格式 或更多的空間與空間(或管道字符包圍 | )。

的 測試數據表 必須有一個或多個星號之前 名字同樣的TSV格式。 否則星號和可能的 空間表中頭被忽略所以,例如, * * * 設置* * * 和 *設置 以同樣的方式工作。 也同樣地 之前把一切的TSV格式,第一個表將被忽略。

在純文本文件選項卡被自動轉換為兩個 空間。 這允許使用一個標簽作為分隔符類似 TSV格式。 不過,請注意,在純文本格式 多個選項卡被認為是一個分隔符而在 每一個選項卡將分離器TSV格式。

空間分隔的格式

空間用作分隔符的數量各有不同,只要有 至少兩個空間,因此可以把數據對齊。 這是一個明顯的好處在文本編輯器中編輯TSV格式 因為TSV對齊不能控制。

*** Settings ***
Library       OperatingSystem

*** Variables ***
${MESSAGE}    Hello, world!

*** Test Cases ***
My Test
    [Documentation]    Example test
    Log    ${MESSAGE}
    My Keyword    /tmp

Another Test
    Should Be Equal    ${MESSAGE}    Hello, world!

*** Keywords ***
My Keyword
    [Arguments]    ${path}
    Directory Should Exist    ${path}

因為空間用作分隔符,都必須空 逃了出來 與 $ {空} 變量或一個反斜杠。 否則 處理空白 不是不同的比其他測試數據嗎 因為領導,后,必須連續空間 逃脫了。

提示

推薦使用四個關鍵詞之間的空間和參數。

管和空間分隔的格式

最大的問題是視覺空間的分隔的格式 將關鍵詞形式參數可能會非常棘手。 這是一個問題 特別是如果關鍵詞很多參數和/或參數 包含空格。 在這種情況下管道和空間分隔的變體 更好地工作,因為它使細胞邊界更加明顯。

| *Setting*  |     *Value*     |
| Library    | OperatingSystem |

| *Variable* |     *Value*     |
| ${MESSAGE} | Hello, world!   |

| *Test Case*  | *Action*        | *Argument*   |
| My Test      | [Documentation] | Example test |
|              | Log             | ${MESSAGE}   |
|              | My Keyword      | /tmp         |
| Another Test | Should Be Equal | ${MESSAGE}   | Hello, world!

| *Keyword*  |
| My Keyword | [Arguments] | ${path}
|            | Directory Should Exist | ${path}

一個純文本文件可以包含在空間僅和測試數據 space-and-pipe分隔格式,但一行必須總是使用 同樣的分離器。 管和空間分隔線是認可的 強制性的領導管,但管道末端的線 可選的。 至少必須有一個空間兩邊的 管(除了在開頭和結尾),但不需要調整 管道如果它讓數據更清晰。

不需要逃避空細胞(除了 落后於空 細胞 )當使用管道和空間分隔的格式。 唯一的 是考慮到可能的管道周圍的空間 在實際的測試數據必須用反斜杠轉義:

| *** Test Cases *** |                 |                 |                      |
| Escaping Pipe      | ${file count} = | Execute Command | ls -1 *.txt \| wc -l |
|                    | Should Be Equal | ${file count}   | 42                   |
編輯和編碼

最大的一個好處的純文本格式HTML和TSV 使用正常的文本編輯器編輯它是非常容易。 許多編輯 Eclipse ide(至少,Emacs,Vim,和TextMate軟件)也有插件 支持語法高亮顯示機器人框架測試數據也可以提供 其他特性,比如關鍵字補全。 純文本格式 支持的 騎 。

同樣與TSV測試數據,純文本文件總是預期 使用utf - 8編碼。 結果也支持ASCII文件。

公認的擴展

從機器人2.7.6框架,可以保存純文本 使用一種特殊的測試數據文件 .robot 擴展除了 正常的 . txt 擴展。 新的擴展更容易 區分測試數據文件從其他純文本文件。

reStructuredText格式

reStructuredText (reST)是一個易於閱讀純文本標記語法 通常用於Python項目的文檔(包括 Python本身,以及本用戶指南)。 其他文件是最 經常被編譯為HTML,但也支持其他的輸出格式。

使用reST與機器人框架允許您混合豐富的格式化文檔 和測試數據在一個簡潔容易處理的文本格式 使用簡單的文本編輯器,diff工具,和源代碼控制系統。 在實踐中它結合了許多純文本和HTML格式的好處。

當使用其他文件與機器人框架中,有兩種方法來定義的 測試數據。 或者你可以使用 代碼塊 並定義測試用例 使用 純文本格式 或者你可以使用 表 完全 像你這樣的 HTML格式 。

請注意

使用其他文件與機器人框架需要Python docutils 模塊安裝。

使用代碼塊

reStructuredText文檔可以包含代碼示例在所謂的代碼塊。 當這些文件被編譯成HTML或其他格式,代碼塊 語法突出顯示使用 Pygments 。 在標准的其他代碼塊 開始使用的 代碼 指令,但 斯芬克斯 使用 代碼塊 或 源代碼里 代替。 編程語言的名稱 代碼塊作為參數給出的指令。 例如,后 代碼塊包含Python和機器人框架的例子,分別為:

.. code:: pythondefexample_keyword():
       print'Hello, world!'

.. code:: robotframework*** Test Cases ***Example TestExample Keyword

當機器人框架解析reStructuredText文件時,它首先搜索 可能的 代碼 代碼塊 或 源代碼里 塊 包含機器人框架測試數據。 如果找到這樣的代碼塊,數據 它們包含寫入一個內存中的文件並執行。 以外的所有數據 代碼塊將被忽略。

測試數據必須定義代碼塊使用 純文本格式 。 如以下示例所示,空間和管道分離變異 支持:

Example-------

This text is outside code blocks and thus ignored.

.. code:: robotframework*** Settings ***
   Library       OperatingSystem*** Variables ***
   ${MESSAGE}    Hello, world!*** Test Cases ***My Test
       [Documentation]    Example testLog    ${MESSAGE}
       My Keyword/tmpAnother TestShould Be Equal    ${MESSAGE}    Hello, world!

Also this text is outside code blocks and ignored. Above block used
the space separated plain text format and the block below uses the pipe
separated variant.

.. code:: robotframework

   | *** Keyword ***  |                        |         |
   | My Keyword       | [Arguments]            | ${path} |
   |                  | Directory Should Exist | ${path} |

請注意

逃離 在這種格式中使用反斜杠字符正常工作。 不需要雙逃跑時使用reST表。

請注意

對測試數據的支持代碼塊中的一個新特性 機器人2.8.2框架。

使用表格

如果一個恰好與機器人框架文檔中不包含代碼塊 數據,它將包含同樣的數據表 的 HTML格式 。 在這種情況下機器人框架編制文檔 HTML在內存中並解析它就像解析一個正常的HTML文件。

機器人框架標識 測試數據表 基於文本的第一 細胞和公認的表類型之外的所有內容將被忽略。 的四個測試數據表的一個示例如下所示 使用簡單的表和網格表的語法:

Example-------

This text is outside tables and thus ignored.

============  ================  =======  =======
  Setting          Value         Value    Value
============  ================  =======  =======
Library       OperatingSystem
============  ================  =======  =======


============  ================  =======  =======
  Variable         Value         Value    Value
============  ================  =======  =======
${MESSAGE}    Hello, world!
============  ================  =======  =======


=============  ==================  ============  =============
  Test Case          Action          Argument      Argument
=============  ==================  ============  =============
My Test        [Documentation]     Example test
\              Log                 ${MESSAGE}
\              My Keyword          /tmp
\
Another Test   Should Be Equal     ${MESSAGE}    Hello, world!
=============  ==================  ============  =============

Also this text is outside tables and ignored. Above tables are created
using the simple table syntax and the table below uses the grid table
approach.

+-------------+------------------------+------------+------------+
|   Keyword   |         Action         |  Argument  |  Argument  |
+-------------+------------------------+------------+------------+
| My Keyword  | [Arguments]            | ${path}    |            |
+-------------+------------------------+------------+------------+
|             | Directory Should Exist | ${path}    |            |
+-------------+------------------------+------------+------------+

請注意

空細胞簡單表的第一列需要轉義。 上面的例子中使用 \ 但 . . 也可以使用。

請注意

因為反斜杠字符是一個轉義字符在休息, 指定一個反斜杠,這樣機器人框架將需要看到它 逃避它與另一個反斜杠 \ \ 。 例如, 一個新行字符必須寫 \ \ n 。 因為 使用反斜杠 逃離 在機器人框架數據, 指定文字當使用其他表需要雙反斜杠 逃離像 c:\ \ \ \ temp 

生成HTML文件基於其他文件顯然每次運行測試 增加了一些開銷。 如果這是一個問題,它可以將一個好主意 其他文件的HTML使用外部工具分開,並讓機器人框架 使用生成的文件。

編輯和編碼

測試數據在reStructuredText文件可以使用任何文本編輯器,編輯 很多編輯器也提供自動語法高亮顯示。 其他格式 不支持 騎 ,雖然。

機器人框架需要包含非ascii字符的其他文件 保存使用utf - 8編碼。

語法錯誤在其他源文件

如果恰好文檔不是語法正確(一個畸形的表 例如),解析它會失敗,沒有測試用例可以發現 文件。 當執行一個其他文件,機器人框架將顯示錯誤 在控制台上。 當執行一個目錄,這樣解析錯誤 通常被忽略。

從機器人框架2.9.2,錯誤水平以下 嚴重的 被忽略 當運行測試,以避免噪聲標准指令等 標記。 這也可能隱藏真正的錯誤,但他們可以看到當處理 正常的文件。

測試數據表

測試數據在下面列出四種類型的表結構。 這些 測試數據表是由表的第一個單元格。 公認的 表名稱 設置 變量 測試用例 關鍵字 。 匹配 不區分大小寫,也奇異變異 設置 和 測試用例 被接受。

不同的測試數據表
用於
設置
1)進口 測試庫 , 資源文件 和 變量的文件。
2)定義的元數據 測試套件 和 測試用例 。
變量 定義 變量 可以使用 其他地方的測試數據。
測試用例 創建測試用例 從可用的 關鍵詞。
關鍵字 創建用戶關鍵字 從現有的 低級的關鍵詞

規則解析數據

忽略了數據

當機器人框架解析測試數據,它忽略了:

  • 所有表不開始 公認的表名 在第一個單元格。
  • 一切在表的第一行除了第一個單元格。
  • 第一個表之前的所有數據。 如果數據格式允許數據之間 表,也將被忽略。
  • 所有空行,這意味着可以使用這些類型的行 表更具可讀性。
  • 年底所有空細胞行,除非他們 Escaping。
  • 所有單反斜杠( \ 當不使用 Escaping。
  • 所有字符后的散列字符( ),當它是第一個 一個細胞。 這意味着可以使用標記進入 評論的測試數據。
  • 所有格式的HTML /其他測試數據。

當機器人框架忽略了一些數據,這些數據是不可用的 任何報告和結果,此外,大多數工具使用機器人 框架還忽略它們。 添加信息,是可見的 機器人框架輸出,把它的文檔或其他元數據 測試用例套件或日志的 內裝式 關鍵字 日志 或 評論 。

處理空白

機器人框架處理空白一樣他們在HTML處理 源代碼:

  • 換行、回車和制表符轉換為空格。
  • 前導和尾隨空白在所有細胞將被忽略。
  • 多個連續的空格倒塌成一個單一的空間。

除此之外,不換行空格替換為正常的空間。 這樣做是為了避免難以調試的錯誤 不間斷空格時不小心使用,而不是一個正常的空間。

如果領先、落后或需要連續空間,他們 Escaping。 換行、回車、標簽和不換行空格 創建使用 轉義序列 \ n r \ \ t \ xA0 分別。

 

Escaping

 

轉義字符的機器人框架測試數據是反斜杠 ( \ ),另外 內置的變量 $ {空} 和 $ {空間} 通常可以用於轉義。 不同的逃逸機制 在下面的章節中討論。

轉義特殊字符

可以使用反斜杠字符轉義特殊字符 所以他們的文字值。

轉義特殊字符
字符 意義 例子
美元\ 美元符號,從未開始 標量變量 。 \ $ { notvar }
\ @ 在簽署,從未開始 變量列表 。 \ @ { notvar }
\ % 百分號,從來沒有一個開始 環境變量 。 \ % { notvar }
\ # 散列標志,從未開始 評論 。 \ #不評論
\ = 等號,永遠的一部分 命名參數的語法 。 不\ =姓名
\ | 管的角色,而不是一個分隔符 管分離格式 。 | |運行ps \ | grep xxx |
\ \ 反斜杠字符,從未逃脫。 c:\ \ temp \ \ $ { var }
形成轉義序列

反斜杠字符還允許創建特殊的轉義序列 公認為字符,否則很難或不可能創造 在測試數據。

轉義序列
序列 意義 例子
\ n 換行符。 第一行\ n2nd線
r \ 回車字符 文本\ rmore文本
\ t 制表符。 文本\ tmore文本
\ xhh 性格與十六進制值 hh  零字節:\ x00 \ xE4
\ uhhhh 性格與十六進制值 hhhh  雪人:\ u2603
\ Uhhhhhhhh 性格與十六進制值 hhhhhhhh  愛酒店:\ U0001f3e9

請注意

所有字符串創建的測試數據,包括字符 \ x02 必須顯式地轉換為Unicode和 如果需要字節字符串。 這個可以做,例如,使用 轉換為字節 或 編碼字符串字節 關鍵字 在 內裝式 和 字符串 庫,分別或 類似的 str(值) 或 value.encode(“utf - 8”) 在Python代碼。

請注意

如果使用了無效的十六進制值 x \ \ u 或 \ U 逃,最終的結果是原來的值 反斜杠字符。 例如, \ xAX (不是十六進制) \ U00110000 (太大價值)的結果 xAX 和 U00110000 ,分別。 這種行為可能會改變 不過,未來。

請注意

內置的變量 $ { \ n } 如果操作系統可以使用嗎 需要依賴行結束符( \ r \ n 在Windows和 \ n 其他地方)。

請注意

可能沒有轉義后的空格字符 \ n 是 忽略了。 這意味着 兩條線\ nhere 和 兩條線\ n 是等價的。 的動機 是讓包裝線包含換行當使用多久 使用HTML格式,但同樣的邏輯也與其他格式。 一個例外是空格字符 忽視了內部的 擴展變量語法 。

請注意

x \ \ u 和 \ U 2.8.2轉義序列在機器人的新框架。

防止忽略空細胞

如果需要空值作為參數關鍵字或否則,他們經常 需要逃到阻止他們 忽略了 。 空的細胞 必須逃脫不管測試數據格式,當使用 空間分隔的格式 所有空值必須轉義。

空的細胞可以用反斜杠字符或逃走了 內置的變量 $ {空} 。 后者通常是建議 因為它是更容易理解。 一個例外的建議是逃跑 縮進細胞 for循環 使用時用反斜杠 空間分隔的格式 。 所有這些情況都說明在以下 例子首先在HTML,然后在空間分離的純文本格式:

測試用例 行動 論點 論點 論點
使用反斜杠 做某事 第一個參數 \
 
使用$ {空} 做某事 第一個參數 $ {空}
 
Non-trailing空 做某事
 
第二個參數 #不需要轉義的HTML
For循環 :對於 $ { var } @ {值}
 
 
日志 $ { var } #不需要逃離這里
*** Test Cases ***
Using backslash
    Do Something    first arg    \
Using ${EMPTY}
    Do Something    first arg    ${EMPTY}
Non-trailing empty
    Do Something    ${EMPTY}     second arg    # Escaping needed in space separated format
For loop
    :FOR    ${var}    IN    @{VALUES}
    \    Log    ${var}                         # Escaping needed here too
防止忽視的空間

因為領導,落后,在細胞和連續空間 忽略了 ,他們 需要逃脫如果他們需要作為參數關鍵字或其他。 同樣當防止忽略空細胞,有可能這樣做 使用反斜杠字符或使用 內置的變量 $ {空間}

逃離空間的例子
用反斜杠轉義 逃避與 $ {空間} 筆記
\主要空間 $ {空間}主要空間
 
尾隨空格\ 落后於空間$ {空間} 反斜杠后必須空間。
\ \ $ {空間} 反斜杠需要兩邊。
連續\ \空間 連續$ {空間* 3 }空間 使用 擴展變量語法 。

正如上面的例子所顯示的,使用 $ {空間} 變量往往使 測試數據更容易理解。 特別方便的結合 的 擴展變量語法 當一個以上的空間是必要的。

將測試數據幾行

如果有更多的數據比容易適合一行,可以使用省略號 ( … 繼續前一行。 在測試用例和關鍵字表, 省略號之前必須至少有一個空的細胞。 在設置和 變量的表,它可以直接放置在設置或變量名。 在所有表中,所有空細胞前省略被忽略。

此外,設置的值,只需要一個值(主要是 文件)可以分成幾列。 這些值將 然后加空間當測試數據 解析。 從機器人Framework 2.7、文檔和測試 集元數據分成多行 加 和換行 。

上面討論的所有語法見下面的例子。 在第一個三個表測試數據沒有分裂,和 需要以下三個說明少列 分裂幾行數據。

測試數據沒有分裂
設置 價值 價值 價值 價值 價值 價值
默認的標簽 tag-1 tag-2 tag-3 tag-4 tag-5 tag-6
變量 價值 價值 價值 價值 價值 價值
@ {列表} 列表 相當 許多 項目
測試用例 行動 論點 參數 參數 參數 參數 參數 參數
例子 (文檔) 文檔 對於這個測試 的情況。 \ n這 可以很 長……
 
 
 
 
 
 
 
(標簽) t - 1 2 條t - 3 第四節 t-5
 
 
 
做X 一個 兩個 三個 四個 六個
 
 
$ { var } = 得到X 1 2 3 4 5 6
測試數據分成幾行
設置 價值 價值 價值
默認的標簽 tag-1 tag-2 tag-3
tag-4 tag-5 tag-6
變量 價值 價值 價值
@ {列表} 列表
相當 許多 項目
測試用例 行動 論點 論點 論點
例子 (文檔) 文檔 對於這個 測試用例。
 
這可以 相當 長……
 
(標簽) t - 1 2 條t - 3
 
第四節 t-5
 
 
做X 一個 兩個 三個
 
四個 六個
 
$ { var } = 得到X 1 2
 
 
3 4
 
 
5 6

 

本文是直譯了國外的文檔,有很多的詞匯都不是很清楚


免責聲明!

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



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