三、RobotFramework--創(chuàng)建測試用例

聲明:本文搬運自官方操作文檔,僅用作學習,有錯誤的地方歡迎指正。
原文鏈接:RobotFramework--創(chuàng)建測試用例

2.2 創(chuàng)建測試用例

2.2.1 測試用例語法

基本語法

測試用例在可用關(guān)鍵字的測試用例表中構(gòu)造。關(guān)鍵字可以從測試庫或資源文件導入,也可以在測試用例文件本身的關(guān)鍵字表中創(chuàng)建。

測試用例表中的第一列包含測試用例名稱。測試用例從行開始,包含此列中包含內(nèi)容,然后繼續(xù)執(zhí)行下一個測試用例名稱或表的末尾。表標題和第一個測試之間有一些錯誤。

第二列通常具有關(guān)鍵字名稱。此規(guī)則的一個例外是設置關(guān)鍵字返回值中的變量,當?shù)诙校赡芤彩呛罄m(xù)列)包含變量名稱,并且關(guān)鍵字名稱位于它們之后。在這兩種情況下,關(guān)鍵字名稱后列都包含指定關(guān)鍵字的可能參數(shù)。


image.png

測試用例表中的設置

測試用例也可以有自己的設置。設置名稱始終在第二列中,其中關(guān)鍵字通常是,其值在后續(xù)列中。設置名稱周圍有方括號,以將其與關(guān)鍵字區(qū)分。下面列出了可用的設置,并在本節(jié)的稍后部分對此進行說明。
[Documentation]
用于說明測試用例。
[Tags]
用于標記測試用例。
[Setup], [Teardown]
指定測試設置和拆解。也有同義詞 [先決條件][后條件] 分別
[Template]
指定要使用的模板關(guān)鍵字。測試本身將僅包含用作該關(guān)鍵字參數(shù)的數(shù)據(jù)。
[Timeout]
用于設置測試用例超時。超時將在它們自己的部分中討論。

image.png

設置表中的測試用例相關(guān)設置

設置表可以具有以下測試用例相關(guān)設置。這些設置主要是前面列出的測試用例特定設置的默認值。
Force Tags, Default Tags
標記 的強制值和默認值。
Test Setup, Test Teardown
測試設置和拆解的默認值。預制條件和后置條件,分別
測試模板
要使用的默認模板關(guān)鍵字。
測試超時
測試用例超時的默認值。超時將在它們自己的部分中討論。

2.2.2 使用參數(shù)

前面的示例已經(jīng)演示了使用不同參數(shù)的關(guān)鍵字,本節(jié)更徹底地討論了這一重要功能。如何實際實現(xiàn)用戶關(guān)鍵字和庫關(guān)鍵字與不同的參數(shù)在單獨的部分討論。

關(guān)鍵字可以接受零個或多個參數(shù),并且某些參數(shù)可能具有默認值。關(guān)鍵字接受的參數(shù)取決于其實現(xiàn),通常搜索此信息的最佳位置是關(guān)鍵字的文檔。在本節(jié)中的示例中,文檔預期使用libdoc 工具生成,但在由通用文檔工具(如 javadoc )生成的文檔上,可以獲得相同的信息。

所需參數(shù)

大多數(shù)關(guān)鍵字都有一定數(shù)量的參數(shù),必須始終給出。在關(guān)鍵字文檔中,通過指定用逗號分隔的參數(shù)名稱(如第一、第二、第三個)來表示。在這種情況下,參數(shù)名稱實際上并不重要,只是它們應該解釋參數(shù)的用向,但具有文檔中指定的參數(shù)數(shù)量完全相同非常重要。使用太少或太多的參數(shù)將導致錯誤。

下面的測試使用關(guān)鍵字*Create Directory*Copy File。它們的參數(shù)指定為pathsource, destination,這意味著他們分別使用一個和兩個參數(shù)。最后一個關(guān)鍵字*No Operation*``from ``*BuiltIn*不采用任何參數(shù)。

image.png

默認值

參數(shù)通常具有默認值,可以給出也可以不給出。在文檔中,默認值通常與具有等號(如name=default value)的參數(shù)名稱分開,但使用 Java 實現(xiàn)的關(guān)鍵字可能有多個具有不同參數(shù)的關(guān)鍵字實現(xiàn)。所有參數(shù)都有可能的默認值,但具有默認值的參數(shù)之后不能有任何位置參數(shù)。

使用默認值的示例如下例所示,該示例使用具有參數(shù)path, content=, encoding=UTF-8 的創(chuàng)建文件關(guān)鍵字。嘗試在沒有任何參數(shù)或三個多個參數(shù)的情況下使用它將不起作用。

image.png

可變參數(shù)數(shù)

也可以創(chuàng)建接受任何數(shù)量的參數(shù)的關(guān)鍵字。這些參數(shù)可以與具有默認值的強制參數(shù)和參數(shù)組合,但所謂的varargs始終是最后一個參數(shù)。在文檔中,它們通常有一個星號在參數(shù)名稱之前,如*varargs,但與Java 庫再次出現(xiàn)差異。

刪除文件和聯(lián)接路徑關(guān)鍵字在下面的示例中用于參數(shù)*pathsbase, *parts, 分別。前者可用于任何數(shù)量的參數(shù),但后者至少需要一個參數(shù)。

image.png

命名參數(shù)

當關(guān)鍵字接受多個具有默認值的參數(shù)時,僅使用位置參數(shù)重寫最后一個參數(shù)是不可能的。例如,如果具有參數(shù)arg1=aarg2=barg3=c的關(guān)鍵字與下面的測試一樣使用,則其參數(shù) arg1arg2都得到一個空字符串作為值而不是默認值。

image.png

為了使只給出一些預期默認值的參數(shù),在Robot Framework2.5 中添加了新的命名參數(shù)語法。使用此語法,需要重寫其默認值的參數(shù)立即在格式argname= value 中所需的參數(shù)之后給出。應該使用默認值的參數(shù)可以簡單地被拋在一起。下面的示例測試演示了實際工作原理,該測試使用與上述示例相同的關(guān)鍵字。在此示例中,未指定的參數(shù)將獲取其默認值。

image.png

命名參數(shù)語法自然可以與接受默認值的參數(shù)一起使用,同時當沒有參數(shù)離開時。這可以使參數(shù)含義比僅顯示值時更清晰。但是,無法用方式命名所需的參數(shù)。此外,不可能先給出命名參數(shù),然后給出 vararg。

名稱參數(shù)功能的最大限制是,它目前只適用于用戶關(guān)鍵字和使用使用靜態(tài)庫 API 或混合庫 API的 Python實現(xiàn)的庫關(guān)鍵字。將來可能會添加對 Java 庫和動態(tài)庫 API的支持。在此之前,可以創(chuàng)建包裝不兼容關(guān)鍵字的用戶關(guān)鍵字。

注意
當命名參數(shù)語法與用戶關(guān)鍵字一起使用時,將給出參數(shù)名稱而不指定$=修飾。例如,具有參數(shù)${arg1}默認的用戶關(guān)鍵字,必須像 arg2=重寫 那樣使用${arg2}秒。

僅當?shù)忍栔皡?shù)的部分與默認值匹配參數(shù)的名稱時,才使用命名參數(shù)語法。此匹配從給定參數(shù)列表的末尾開始,并在沒有匹配時停止。在極少數(shù)情況下,當存在意外匹配時,可以使用[以] 來轉(zhuǎn)義此語法,如 nomatch = 此處。

注意
參數(shù)命名對大小寫和空格極為敏感。前者表示,如果您有參數(shù)argarg=<value>Arg=<value>ARG=<value>三個為不同的參數(shù),后者表示在=前后不允許有空格

下面的示例演示在不同的方案中使用命名參數(shù),包括在測試庫導入中。


image.png

嵌入到關(guān)鍵字名稱的參數(shù)

指定參數(shù)的一種完全不同的方法是將它們嵌入到關(guān)鍵字名稱中。此語法至少目前僅受用戶關(guān)鍵字支持。

2.2.3 測試用例名稱和文檔

測試用例名稱直接來自測試用例表:它正是輸入到測試用例列中的名稱。一個測試套件中的測試用例應具有唯一的名稱。為此,您還可以在測試本身使用自動變量 $[TEST_NAME]來引用測試名稱。每當執(zhí)行測試時它都可用,包括所有用戶關(guān)鍵字,以及測試設置和測試拆解。

[文檔]設置允許您為測試用例設置免費文檔。該文本顯示在命令行輸出以及生成的測試日志和測試報告中。

如果文檔很長,它可以拆分為多個單元格,這些單元格與空格一起進行。可以使用簡單的HTML 格式,并且可以使用變量使文檔具有動態(tài)性。從Robot Framework2.7開始,如果文檔被分成多行,則行本身會使用新行進行。如果行已以新行結(jié)尾,或者以轉(zhuǎn)義反斜杠結(jié)尾,不添加新行。


image.png

2.2.4 標記測試用例

在Robot Framework中標簽是一種簡單而強大的機制,用于對測試用例進行分類。標簽是自由文本,它們至少可用于以下目的:

  • 標簽顯示在測試報告、日志中,當然還有測試數(shù)據(jù)中,因此它們?yōu)闇y試用例提供元數(shù)據(jù)。
  • 有關(guān)測試用例的統(tǒng)計信息(總數(shù)、通過、失敗)根據(jù)標簽自動收集。
  • 使用標簽,可以包括或排除要執(zhí)行的測試用例。
  • 使用標簽,可以指定哪些測試用例被視為關(guān)鍵。

在本節(jié)中,僅介紹如何為測試用例設置標簽,下面列出了不同的操作方法。這些方法可以靈活使用。
Force Tags設置表
具有此設置的測試用例文件中的所有測試用例始終得到指定的標記。如果它在測試套件初始化文件中使用,則子測試套件中的所有測試用例都得到這些標記。

Default Tags 設置表
沒有自己的 [標記]設置的測試用例獲取這些標記。從機Robot Framework 2.5 開始,測試套件初始化文件中不再支持默認標記。

[Tags] 測試用例表
測試用例始終獲取這些標記。此外,它不會獲取使用默認標記指定的可能標記,因此可以使用空值覆蓋默認標記。從Robot Framework 2.5.6 開始,也可以使用值NONE來覆蓋默認標記。

*-- settag*命令行選項
除了在其他地方獲取的標記外,所有執(zhí)行的測試用例都使用此選項設置標記。

*Set Tags**Remove Tags*關(guān)鍵字
這些內(nèi)置關(guān)鍵字可用于在測試執(zhí)行期間修改標記。

標記是自由文本,但已規(guī)范化,以便將其轉(zhuǎn)換為小寫,并刪除所有空格。如果測試用例多次獲得相同的標記,則刪除第一個測試用例以外的其他匹配項。可以使用變量創(chuàng)建標記,假設這些變量存在。


image.png

image.png

2.2.5 測試設置和拆解

Robot Framework具有與許多其他測試自動化框架類似的測試設置和拆解功能。簡而言之,測試設置是在測試用例之前執(zhí)行的,測試用例之后執(zhí)行測試拆解。在Robot Framework設置和拆解只是正常的關(guān)鍵字與可能的參數(shù)。

設置和拆解始終是一個關(guān)鍵字。如果他們需要處理多個單獨的任務,可以為此創(chuàng)建更高級別的用戶關(guān)鍵字。另一種解決方案是使用Robot Framework2.5 中添加的內(nèi)置關(guān)鍵字*Run Keywords*執(zhí)行多個關(guān)鍵字。

測試拆解在兩個方面是特殊的。首先,它也在測試用例失敗時執(zhí)行,因此它可用于清除必須完成的清理活動,而不管測試用例的狀態(tài)如何。從Robot Framework 2.5 開始,即使其中一個關(guān)鍵字失敗,也會執(zhí)行拆解中的所有關(guān)鍵字。此失敗功能的繼續(xù)功能也可以與普通關(guān)鍵字一起使用,但默認情況下,它處于內(nèi)部拆解狀態(tài)。

在測試用例文件中為測試用例指定設置或拆解的最簡單方法是使用"設置"表中的測試設置和測試拆解設置。單個測試用例也可以有自己的設置或拆解。它們使用測試用例表中[Setup] [Teardown] 設置定義,并覆蓋可能的測試設置和測試拆解設置。在[Setup] [Teardown] 設置后沒有關(guān)鍵字意味著沒有設置或拆解。從Robot Framework 2.5.6 開始,也可以使用值NONE來指示測試沒有設置/拆解。

image.png

image.png

通常,在創(chuàng)建用例式測試用例時,術(shù)語先決條件和后置條件優(yōu)先于術(shù)語設置和拆解。Robot Framework還支持此術(shù)語,因此先決條件是設置的同義詞和拆解的后置條件。
image.png

要作為設置或拆解執(zhí)行的關(guān)鍵字的名稱可以是變量。通過將關(guān)鍵字名稱作為命令行中的變量提供,這便于在不同的環(huán)境中進行不同的設置或拆解。

注意
測試套件可以有自己的設置和拆解。套件設置在該測試套件中的任何測試用例或子測試套件之前執(zhí)行,同樣,在它們之后執(zhí)行套件拆解。

2.2.6 測試模板

測試模板將普通關(guān)鍵字驅(qū)動的測試用例轉(zhuǎn)換為數(shù)據(jù)驅(qū)動測試。普通測試用例的正文是根據(jù)關(guān)鍵字及其可能的參數(shù)構(gòu)造的,而使用模板的測試用例僅定義模板關(guān)鍵字的參數(shù)。以下示例測試用例在功能上完全相同,說明了這一點。


image.png

如上例所示,可以使用 [Template] 設置為單個測試用例指定模板。另一種方法就是在設置表中使用Test Template 設置,在這種情況下,該模板將應用于該測試用例文件中的所有測試用例。[Template] 設置將覆蓋"設置"表中的可能模板集, [Template] 空值意味著即使使用測試模板,測試也沒有模板。從Robot Framework 2.5.6 開始,也可以使用值NONE來指示測試沒有模板。

如果模板用例的正文中包含多個數(shù)據(jù)行(如下所示),則模板將應用于所有行。這意味著將執(zhí)行多次相同的關(guān)鍵字,每次執(zhí)行一次,每行都有數(shù)據(jù)。模板測試也很特別,因此即使失敗,也會執(zhí)行所有回合。在正常測試中,也可以使用這種"在故障模式繼續(xù)",但使用模板測試時,該模式將自動打開。


image.png

如果模板與for 循環(huán)一起使用,則模板將應用于循環(huán)內(nèi)的所有步驟。在這種情況下,也使用"繼續(xù)失敗模式",這意味著即使存在故障,所有步驟也會使用所有循環(huán)元素執(zhí)行。


image.png

測試模板的主要用例是減少與數(shù)據(jù)驅(qū)動測試的重復。與文件中的所有測試重復相同的關(guān)鍵字,可以僅在"設置"表中使用一次。下一節(jié)將更透徹地說明此用法。

注意
測試模板是Robot Framework 2.5 中的新功能。

注意
目前不可能使用變量指定模板關(guān)鍵字。此限制可能在將來的版本中取消。

2.2.7 不同的測試用例樣式

有幾種不同的方法來編寫測試用例。描述某種工作流的測試用例可能以關(guān)鍵字驅(qū)動或行為驅(qū)動的方式編寫。數(shù)據(jù)驅(qū)動樣式可用于使用不同的輸入數(shù)據(jù)測試同一工作流。

關(guān)鍵字驅(qū)動

工作流測試(如前面舉例的登錄測試)由多個關(guān)鍵字及其可能的參數(shù)構(gòu)造。其正常結(jié)構(gòu)是,首先將系統(tǒng)引入初始狀態(tài)(有效登錄示例中打開登錄頁),然后對系統(tǒng)進行操作(輸入名稱輸入密碼、提交憑據(jù)),最后驗證系統(tǒng)的行為是否如預期(歡迎頁面應打開)。

數(shù)據(jù)驅(qū)動

編寫測試用例的另一種樣式是數(shù)據(jù)驅(qū)動方法,其中測試用例只使用一個較高級別的關(guān)鍵字,通常創(chuàng)建為用戶關(guān)鍵字,該關(guān)鍵字隱藏實際的測試工作流。當需要使用不同的輸入和/或輸出數(shù)據(jù)測試相同的方案時,這些測試非常有用。每次測試都可以重復相同的關(guān)鍵字,但測試模板功能允許指定關(guān)鍵字僅使用一次。


image.png

上述示例有六個單獨的測試,每個無效的用戶/密碼組合一個測試,下面的示例演示了如何只對所有組合進行一個測試。使用測試模板時,即使失敗,測試的所有回合都執(zhí)行,因此這兩種樣式之間沒有真正的功能差異。在上面的示例中,將命名單獨的組合,以便更容易地查看它們測試的,但有可能這些測試可能會弄亂統(tǒng)計信息。使用哪種樣式取決于上下文和個人偏好。


image.png

提示
在上面的兩個示例中,已更改列標題以匹配數(shù)據(jù)。這是可能的,因為在第一行中,除第一個單元格外的其他單元格將被忽略。

行為驅(qū)動

也可以將測試用例編寫為非技術(shù)項目參與者能看懂的方式。這些通常也是驗收測試的一部分,通常稱為驗收測試驅(qū)動開發(fā) (ATDD)。

編寫這些需求/測試的一種方法就是行為驅(qū)動開發(fā)(BDD)推廣的"Given-When-Then"樣式。在此樣式中編寫測試用例時,初始狀態(tài)通常用一個關(guān)鍵字表示,該關(guān)鍵字以關(guān)鍵字 Given 為首,操作以"When"開始,以"Then"為起點的關(guān)鍵字描述操作。如果步驟具有多個操作,可以使用以 And 為標題的關(guān)鍵字。

image.png

忽略Given/When/Then/And前綴

如果找不到名匹配的前綴,則在搜索匹配關(guān)鍵字時刪除前綴Given, When, Then和And。這適用于用戶關(guān)鍵字和庫關(guān)鍵字。例如Given login page is open,在上面的示例中可以實現(xiàn)為用戶關(guān)鍵字,帶或沒有單詞Given。忽略前綴還允許使用不同的前綴使用相同的關(guān)鍵字。例如Welcome page should be open 也可以用作And welcome page should be open

將數(shù)據(jù)嵌入到關(guān)鍵字

在編寫具體示例時,能夠?qū)嶋H數(shù)據(jù)傳遞給關(guān)鍵字實現(xiàn)是很有用的。用戶關(guān)鍵字支持這一點,允許將參數(shù)嵌入關(guān)鍵字名稱中。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,702評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,143評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,553評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,620評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,416評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,940評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,024評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,170評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,709評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,597評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,291評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,029評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,407評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,663評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,403評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,746評論 2 370

推薦閱讀更多精彩內(nèi)容