Robot Framework官方教程(二)測試數據語法

Robot Framework官方教程(一)入門
Robot Framework官方教程(二)測試數據語法
Robot Framework官方教程(三)創(chuàng)建測試用例
Robot Framework官方教程(四)創(chuàng)建測試套件
Robot Framework官方教程(五)使用測試庫
Robot Framework官方教程(六)變量
Robot Framework官方教程(七)創(chuàng)建用戶關鍵字
Robot Framework官方教程(八) 資源和變量文件
Robot Framework官方教程(九) 執(zhí)行測試用例
Robot Framework官方教程(十)擴展RobotFramework框架

2.1.1文件和目錄

測試數據的層次結構安排如下:

  • 測試數據在測試數據文件中創(chuàng)建。
  • 測試數據文件會自動創(chuàng)建一個包含該文件中的測試數據的測試套件
  • 包含測試數據文件的目錄構成了更高級別的測試套件拌喉。這樣的測試套件目錄具有從測試數據文件創(chuàng)建的套件作為其子測試套件怀喉。
  • 測試套件目錄還可以包含其他測試套件目錄懒鉴,并且此分層結構可以根據需要進行深度嵌套钾腺。
  • 測試套件目錄可以有一個特殊的初始化文件几莽。

除此之外神郊,還有:

2.1.2支持的文件格式

Robot Framework測試數據支持以表格格式定義践宴,使用超文本標記語言(HTML),制表符分隔值(TSV)爷怀,純文本或reStructuredText(reST)格式阻肩。Robot Framework根據文件擴展名為測試數據選擇解析器。擴展名不區(qū)分大小寫运授,識別的擴展名為 .html烤惊,.htm和.xhtml用于HTML,.tsv 用于TSV吁朦,.txt用于純文本柒室,.rst或 .rest用于reStructuredText。

HTML格式

在HTML文件中逗宜,測試數據在單獨的表中定義(請參閱下面的示例)雄右。Robot Framework 根據第一個單元格中的文本識別這些測試數據表。忽略已識別表格之外的所有內容纺讲。

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!
Keyword Action Argument Argument
My Keyword [Arguments] ${path}
Directory Should Exist ${path}
編輯測試數據

可以使用您喜歡的任何編輯器編輯HTML文件中的測試數據擂仍,但建議您使用圖形編輯器來實際查看表格。還有一個名為RIDE的工具 可用于編輯測試數據熬甚。

TSV格式

TSV格式可以在Robot Framework的測試數據中使用逢渔,其目的與HTML相同。在TSV文件中乡括,所有數據都在一個大表中肃廓。測試數據表從一個或多個星號(*)中識別,然后是正常的表名和可選的結束星號诲泌。第一個識別的表之前的所有內容都與HTML數據中表外的數據都會被忽略盲赊。

*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!
*Keyword* *Action* *Argument* *Argument*
My Keyword [Arguments] ${path}
Directory Should Exist ${path}
編輯測試數據

您可以在任何電子表格程序(如Microsoft Excel)中創(chuàng)建和編輯TSV文件。保存文件時選擇以制表符分隔的格式档礁,并記住將文件擴展名設置為.tsv角钩。關閉所有自動更正并配置工具以將文件中的所有值視為純文本也是一個好主意。

使用任何文本編輯器都可以相對輕松地編輯TSV文件,特別是如果編輯器支持從空格中直觀地分隔選項卡递礼。RIDE也支持TSV格式惨险。

Robot Framework首先將所有內容拆分為行,然后根據表格字符將行拆分為單元格來解析TSV數據脊髓。電子表格程序有時會用引號括起單元格(例如辫愉,“my value”),而Robot Framework會刪除它們将硝。數據中可能的引號加倍(例如恭朗, "my ""quoted"" value"),這也是正確處理的依疼。如果您使用電子表格程序來創(chuàng)建TSV數據痰腮,則不需要注意這一點,但如果以編程方式創(chuàng)建數據律罢,則必須遵循與電子表格相同的引用約定膀值。

編碼

TSV文件總是應該使用UTF-8編碼。由于ASCII是UTF-8的子集误辑,因此自然也支持純ASCII沧踏。

純文本格式

純文本格式在技術上與TSV格式類似,但是單元格之間的分隔符是不同的巾钉。TSV格式使用制表符翘狱,但在純文本格式中,您可以使用兩個或多個空格砰苍,或用管道字符(|)包圍潦匈。

測試數據表在名字前必須有一個或多個星號,類似于在TSV格式师骗。否則會忽略表頭中的星號和可能的空格历等,例如,***Settings****Settings*的工作方式相同辟癌。與TSV格式類似,忽略第一個表之前的所有內容荐捻。

在純文本文件中黍少,tabj會自動轉換為兩個空格。這允許使用單個tab作為分隔符处面,類似于TSV格式厂置。但請注意,在純文本格式中魂角,多個tab被視為單個分隔符昵济,而在TSV格式中,每個tab都是分隔符。

空格分隔格式

用作分隔符的空格數可以變化访忿,只要存在至少兩個空格瞧栗,因此可以很好地對齊數據。這比在文本編輯器中編輯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}

因為space被用作分隔符,所有空單元必須通過${EMPTY}變量或一個反斜杠被轉義卧斟。否則 會像其他測試數據一樣處理空白殴边,首尾的和連續(xù)的空格都會被忽略。

管道和空格分隔格式

空格分隔格式的最大問題是在視覺上很難區(qū)分關鍵字的參數珍语。尤其是當關鍵字占用大量參數或者參數包含空格時問題更加嚴重锤岸。在這種情況下属韧,管道和空格分隔變體可以更好地工作怨酝,因為它使單元格邊界更加明顯苍苞。

| *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}

純文本文件格式的測試數據可以既包含空格又包含空格加管道的分隔格式腊凶,但是單行必須始終使用相同的分隔符撵术。管道和空格分隔符由行首的管道符識別毒返,但行尾的管道符是可選的链快。管道兩側必須至少有一個空格(開頭和結尾除外)险领,除了使數據更清晰之外凡辱,不需要對齊管道戒职。

使用管道和空格分隔格式時,無需轉義空單元格(行尾空單元格除外)透乾。唯一要考慮的是洪燥,實際測試數據中的管道必須使用反斜杠進行轉義:

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

與HTML和TSV相比,純文本格式的最大好處之一是使用普通文本編輯器進行編輯非常容易乳乌。對于Emacs 捧韵,甚至還有一個特殊的robot-mode.el,它提供語法高亮和關鍵字完成汉操。RIDE也支持純文本格式再来。

與TSV測試數據類似,純文本文件總是使用UTF-8編碼磷瘤。因此芒篷,也支持ASCII文件。

reStructuredText格式

reStructuredText(reST)是一種易于閱讀的純文本標記語法采缚,通常用于Python項目的文檔(包括Python本身以及本用戶指南)针炉。通過使用機器人框架的reST,您可以混合格式豐富的文檔和表格扳抽,以簡明的文本格式指定測試數據篡帕,使用簡單的文本編輯器殖侵,差異工具和源代碼控制系統(tǒng)。

2.1.3測試數據

測試數據由下面列出的四種類型的表組成镰烧。這些測試數據表由表的第一個單元格標識拢军,下表中的最后一列列出了可用作表名稱的不同別名。

表名 用于 別名
設置表 1)導入測試庫拌滋, 資源文件變量文件 2)為測試套件測試用例定義元數據 Setting, Settings, Metadata
變量表 定義可在測試用例中的其他位置使用的變量 Variable, Variables
測試用例表 從可用關鍵字創(chuàng)建測試用例 Test Case, Test Cases
關鍵字表 從現有的較低級別關鍵字創(chuàng)建用戶關鍵字 Keyword, Keywords, User Keyword, User Keywords

2.1.4解析數據的規(guī)則

被忽略的數據

當Robot Framework解析測試數據時朴沿,它會忽略:

  • 所有不以第一個單元格中的已識別表名開頭的表。
  • 除了第一個單元格之外败砂,表格第一行上的所有其他內容赌渣。
  • HTML / reST中的表外數據和TSV中第一個表之前的數據。
  • 所有空行昌犹,這意味著可以使用這些行來使表更具可讀性坚芜。
  • 行尾的所有空單元格; 您必須添加反斜杠(\)以防止忽略此類單元格。
  • 所有單反斜杠(\); 它們被用作轉義斜姥。
  • 哈希標記(#)后面的所有字符鸿竖,如果它是單元格的第一個字符; 這意味著哈希標記可用于在測試數據中輸入注釋。
  • HTML / reST測試數據中的所有格式铸敏。

當Robot Framework忽略某些數據時缚忧,此數據在任何生成的報告中都不可用,此外杈笔,Robot Framework使用的大多數工具也會忽略它們闪水。要添加在Robot Framework輸出中可見的信息,或者可用于RIDE的信息蒙具,請將其放在測試數據或套件的文檔或其他元數據中球榆,或使用BuiltIn庫中提供的Log或Comment關鍵字進行記錄

轉義

Robot Framework解析器的轉義字符是反斜杠(\)禁筏。轉義字符可以使用如下:

注意

這些轉義規(guī)則僅適用于關鍵字的參數和設置的值。例如山林,它們不用于關鍵字和測試數據名稱房待。

處理空白

Robot Framework處理空格(例如空格邢羔,換行符和制表符)的方式與在HTML中處理它們的方式相同。這意味著Robot Framework:

  • 刪除所有單元格中的首尾空格桑孩。
  • 將多個連續(xù)空格更改為單個空格拜鹤。
  • 將所有換行符和制表符轉換為空格。

為了防止Robot Framework根據這些規(guī)則解析數據流椒,可以使用反斜杠:

  • 在行首空格之前敏簿,例如\ some text
  • 在連續(xù)的空格之間宣虾,例如text \ \ more text惯裕。
  • 行尾空格,例如一些文本some text \ \绣硝。
  • 作為\n創(chuàng)建換行符蜻势,例如first line\n2nd line
  • 作為\t來創(chuàng)建制表符鹉胖,例如text\tmore text握玛。
  • 作為\r來創(chuàng)建回車符,例如text\rmore text甫菠。

表示首尾或連續(xù)空格的另一種更常見的方法是使用內置變量 ${SPACE}挠铲。該擴展變量甚至允許類似語法${SPACE *8},這使得處理連續(xù)空格非常簡單寂诱。

注意

\n后面未轉義空白字符會被忽略拂苹,以允許包含wrapping換行符的長行。這意味著two lines\nheretwo lines\n here是等價的刹衫。此規(guī)則的一個例外是在擴展變量中不會忽略空白字符醋寝。

將測試數據劃分為多行

如果有很多數據,一行容納不下带迟,則可以使用省略號(...)繼續(xù)上一行音羞。在測試數據Testcase和用戶關鍵字Keywords表中,省略號前必須至少有一個空單元格仓犬。在設置Settings和變量Variables表中嗅绰,它可以直接放在設置或變量名稱下。

在所有表中搀继,省略號之前的所有空單元格會被忽略窘面。

此外,只需一個值(主要是文檔Document)的設置值可以拆分為多個列叽躯。在解析測試數據時财边,這些值將與空格一起連接。從Robot Framework 2.7開始点骑,分成多行的文檔和測試套件元數據將與換行符一起鏈接酣难。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末谍夭,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子憨募,更是在濱河造成了極大的恐慌紧索,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菜谣,死亡現場離奇詭異珠漂,居然都是意外死亡,警方通過查閱死者的電腦和手機尾膊,發(fā)現死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門媳危,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人眯停,你說我怎么就攤上這事济舆。” “怎么了莺债?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵滋觉,是天一觀的道長。 經常有香客問我齐邦,道長椎侠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任措拇,我火速辦了婚禮我纪,結果婚禮上,老公的妹妹穿的比我還像新娘丐吓。我一直安慰自己浅悉,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布券犁。 她就那樣靜靜地躺著术健,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粘衬。 梳的紋絲不亂的頭發(fā)上荞估,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音稚新,去河邊找鬼勘伺。 笑死,一個胖子當著我的面吹牛褂删,可吹牛的內容都是我干的飞醉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼屯阀,長吁一口氣:“原來是場噩夢啊……” “哼冒掌!你這毒婦竟也來了噪裕?” 一聲冷哼從身側響起蹲盘,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤股毫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后召衔,有當地人在樹林里發(fā)現了一具尸體铃诬,經...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年苍凛,在試婚紗的時候發(fā)現自己被綠了趣席。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡醇蝴,死狀恐怖宣肚,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情悠栓,我是刑警寧澤霉涨,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站惭适,受9級特大地震影響笙瑟,放射性物質發(fā)生泄漏。R本人自食惡果不足惜癞志,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一往枷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凄杯,春花似錦错洁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至妖谴,卻和暖如春窿锉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背膝舅。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工嗡载, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人仍稀。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓洼滚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親技潘。 傳聞我的和親對象是個殘疾皇子遥巴,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353