Robot Framework官方教程(三)創(chuàng)建測(cè)試用例

Robot Framework官方教程(一)入門(mén)
Robot Framework官方教程(二)測(cè)試數(shù)據(jù)語(yǔ)法
Robot Framework官方教程(三)創(chuàng)建測(cè)試用例
Robot Framework官方教程(四)創(chuàng)建測(cè)試套件
Robot Framework官方教程(五)使用測(cè)試庫(kù)
Robot Framework官方教程(六)變量
Robot Framework官方教程(七)創(chuàng)建用戶(hù)關(guān)鍵字
Robot Framework官方教程(八) 資源和變量文件
Robot Framework官方教程(九) 執(zhí)行測(cè)試用例
Robot Framework官方教程(十)擴(kuò)展RobotFramework框架

本節(jié)介紹整個(gè)測(cè)試用例語(yǔ)法羔挡。使用測(cè)試用例文件測(cè)試套件目錄測(cè)試用例組織到測(cè)試套件中將在下一節(jié)中討論醇锚。

2.2.1測(cè)試用例語(yǔ)法

基本語(yǔ)法

測(cè)試用例由關(guān)鍵字在測(cè)試用例表中構(gòu)建。關(guān)鍵字可以從測(cè)試庫(kù)資源文件導(dǎo)入,也可以在測(cè)試用例文件本身的關(guān)鍵字表中創(chuàng)建轮蜕。

測(cè)試用例表中的第一列包含測(cè)試用例名稱(chēng)朽合。測(cè)試用例從包含此列的內(nèi)容的行開(kāi)始做入,并繼續(xù)到下一個(gè)測(cè)試用例名稱(chēng)或表的末尾缭嫡。

第二列通常具有關(guān)鍵字名稱(chēng)。此規(guī)則的一個(gè)例外是從關(guān)鍵字返回的值設(shè)置變量惜颇,當(dāng)?shù)诙谢蚝竺娴膸琢邪兞棵Q(chēng)皆刺,且關(guān)鍵字名稱(chēng)位于它們之后時(shí)。在任何一種情況下凌摄,關(guān)鍵字名稱(chēng)后面的列都包含指定關(guān)鍵字的參數(shù)羡蛾。

Test Case Action Argument Argument
Valid Login Open Login Page
Input Name demo
Input Password mode
Submit Credentials
Welcome Page Should Be Open
Setting Variables Do Something first argument second argument
${value} = Get Some Value
Should Be Equal ${value} Expected value

“測(cè)試用例”中的設(shè)置

測(cè)試用例也可以有自己的設(shè)置。設(shè)置名稱(chēng)始終位于第二列中锨亏,其值在后續(xù)列中痴怨。關(guān)鍵字通常也是在第二列煎殷。設(shè)置名稱(chēng)周?chē)蟹嚼ㄌ?hào),以區(qū)別于關(guān)鍵字腿箩『乐保可用設(shè)置如下所示,本節(jié)稍后將對(duì)其進(jìn)行說(shuō)明珠移。

Test Case Action Argument Argument
Test With Settings [Documentation] Another dummy test
[Tags] dummy owner-johndoe
Log Hello, world!

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

設(shè)置表具有以下與測(cè)試用例相關(guān)的設(shè)置涂乌。這些設(shè)置主要是前面列出的測(cè)試用例特定設(shè)置的默認(rèn)值。

2.2.2使用參數(shù)

前面的示例已經(jīng)演示了使用不同參數(shù)的關(guān)鍵字吭狡,本節(jié)將更全面地討論這一重要功能尖殃。如何實(shí)際實(shí)現(xiàn)具有不同參數(shù)的用戶(hù)關(guān)鍵字庫(kù)關(guān)鍵字將在單獨(dú)的部分中討論。

關(guān)鍵字可以接受零個(gè)或多個(gè)參數(shù)划煮,而某些參數(shù)可能具有默認(rèn)值送丰。關(guān)鍵字接受的參數(shù)取決于其實(shí)現(xiàn),通常搜索此信息的最佳位置是關(guān)鍵字的文檔般此。在本節(jié)的示例中蚪战,預(yù)計(jì)文檔將使用libdoc工具生成 牵现,但是有關(guān)通用文檔工具(如javadoc)生成的文檔的相同信息 铐懊。

必需的參數(shù)

大多數(shù)關(guān)鍵字都必須始終給出一定數(shù)量的參數(shù)。在關(guān)鍵字文檔中瞎疼,這通過(guò)指定以逗號(hào)(如第一科乎,第二,第三)分隔的參數(shù)名稱(chēng)來(lái)表示贼急。在這種情況下茅茂,參數(shù)名稱(chēng)實(shí)際上并不重要捏萍,除了它們應(yīng)該解釋參數(shù)的作用,但重要的是具有與文檔中指定的完全相同數(shù)量的參數(shù)空闲。使用太少或太多的參數(shù)將導(dǎo)致錯(cuò)誤令杈。

下面的測(cè)試使用的屬于OperatingSystem庫(kù)的關(guān)鍵字Create DirectoryCopy File。它們的參數(shù)被指定為 path和(source,destination )碴倾,這意味著它們分別采用一個(gè)和兩個(gè)參數(shù)逗噩。最后一個(gè)關(guān)鍵字,來(lái)自BuiltIn的No Operation跌榔, 不帶任何參數(shù)异雁。

Test Case Action Argument Argument
Example Create Directory ${TEMPDIR}/stuff
Copy File ${CURDIR}/file.txt ${TEMPDIR}/stuff
No Operation

默認(rèn)值

參數(shù)通常具有默認(rèn)值,可以給出或不給出僧须。在文檔中纲刀,默認(rèn)值通常與參數(shù)名稱(chēng)分隔,其名稱(chēng)與name = default value相同担平。所有參數(shù)都可能具有默認(rèn)值示绊,但在具有默認(rèn)值的參數(shù)之后不能存在任何位置參數(shù)。

下面的示例說(shuō)明了使用默認(rèn)值暂论,該示例使用 具有參數(shù)path耻台,content =,encoding = UTF-8Create File關(guān)鍵字空另。試圖在沒(méi)有任何參數(shù)或超過(guò)三個(gè)參數(shù)的情況下使用它是行不通的盆耽。

Test Case Action Argument Argument Argument
Example Create File ${TEMPDIR}/empty.txt
Create File ${TEMPDIR}/utf-8.txt Hello world
Create File ${TEMPDIR}/iso-8859-1.txt Hello world ISO-8859-1

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

也可以創(chuàng)建接受任意數(shù)量參數(shù)的關(guān)鍵字。這些參數(shù)可以與必填參數(shù)和帶有默認(rèn)值的參數(shù)組合扼菠,但所謂的varargs只能放在參數(shù)列表的最后一個(gè)摄杂。在文檔中,它們通常在參數(shù)名稱(chēng)之前有一個(gè)星號(hào)循榆,如* varargs析恢。

以下示例中使用的Remove FilesJoin Paths關(guān)鍵字分別包含參數(shù)*pathsbase,*parts秧饮。前者可以與任意數(shù)量的參數(shù)一起使用映挂,但后者至少需要一個(gè)參數(shù)。

Test Case Action Argument Argument Argument
Example Remove Files ${TEMPDIR}/f1.txt ${TEMPDIR}/f2.txt ${TEMPDIR}/f3.txt
@{paths} = Join Paths ${TEMPDIR} f1.txt
... f2.txt f3.txt f4.txt

命名參數(shù)

當(dāng)關(guān)鍵字接受具有默認(rèn)值的多個(gè)參數(shù)時(shí)盗尸,不能使用位置參數(shù)僅覆蓋最后一個(gè)參數(shù)柑船。例如,如果在下面的測(cè)試中使用具有參數(shù)arg1 = a泼各,arg2 = b鞍时,arg3 = c的關(guān)鍵字,則其參數(shù) arg1和arg2都將空字符串作為值而不是其默認(rèn)值。

Test Case Action Argument Argument Argument
Positional Arguments [Documentation] 1st and 2nd argument get empty strings
Example Keyword value

為了只給出一些期望默認(rèn)值更容易的參數(shù)逆巍,在Robot Framework 2.5中添加了新的命名參數(shù)語(yǔ)法及塘。使用此語(yǔ)法,需要覆蓋其默認(rèn)值的參數(shù)將在格式為argname = value的必填參數(shù)之后立即給出锐极◇狭牛可以簡(jiǎn)單地省略使用默認(rèn)值的參數(shù)。以下示例測(cè)試說(shuō)明了這在實(shí)踐中如何工作灵再,該測(cè)試使用與上述示例相同的關(guān)鍵字味咳。在此示例中,未指定的參數(shù)將獲取其默認(rèn)值檬嘀。

Test Case Action Argument Argument Argument
Named Arguments [Documentation] Not specified arguments get default values
Example Keyword arg3=value
Example Keyword arg2=xxx arg3=yyy

當(dāng)沒(méi)有參數(shù)遺留時(shí)槽驶,命名參數(shù)語(yǔ)法自然可以與接受默認(rèn)值的參數(shù)一起使用。這可以使參數(shù)含義比僅顯示值時(shí)更清晰鸳兽。但是掂铐,以這種方式命名必填參數(shù)是不可能的。此外揍异,不能先給出第一個(gè)命名參數(shù)全陨,然后是varargs。

命名參數(shù)功能的最大限制是它目前僅適用于用戶(hù)關(guān)鍵字和使用Python實(shí)現(xiàn)的庫(kù)關(guān)鍵字衷掷,它們使用靜態(tài)庫(kù)API混合庫(kù)API辱姨。

注意

當(dāng)命名參數(shù)語(yǔ)法與用戶(hù)關(guān)鍵字一起使用時(shí),參數(shù)名稱(chēng)不帶${}裝飾戚嗅。例如雨涛,帶參數(shù)${arg1} = default,${arg2} = second的用戶(hù)關(guān)鍵字懦胞, 必須這樣使用:arg2 = override替久。

僅當(dāng)?shù)忍?hào)前面的參數(shù)部分與具有默認(rèn)值的參數(shù)名稱(chēng)匹配時(shí),才使用命名參數(shù)語(yǔ)法躏尉。此匹配從給定參數(shù)列表的末尾開(kāi)始蚯根,并在沒(méi)有匹配時(shí)停止。在偶然匹配的極少數(shù)情況下胀糜,可以使用\ 來(lái)轉(zhuǎn)義此語(yǔ)法颅拦,如nomatch\=here

注意

命名參數(shù)語(yǔ)法既是大小寫(xiě)也是空格敏感的教藻。前者意味著如果你有一個(gè)參數(shù) arg距帅,你必須這樣使用:arg=<value>,并且 Arg=<value>ARG=<value>不起作用怖竭。后者意味著在=號(hào)之前不允許使用空格 锥债,并且在它之后的空格被視為默認(rèn)值本身的一部分陡蝇。

以下示例演示了在不同方案中使用命名參數(shù)痊臭,包括在測(cè)試庫(kù)導(dǎo)入中哮肚。

Setting Value Value Value
Library Telnet prompt=$
Test Case Action Argument Argument Argument
Example Open connection 10.0.0.42 port=${25}
List files options=-lh
List files path=/tmp options=-l
Keyword Action Argument Argument Argument
List files [Arguments] ${path}=. ${options}=
Execute command ls ${options} ${path}

2.2.3測(cè)試用例名稱(chēng)和文檔

測(cè)試用例名稱(chēng)直接來(lái)自Test Case表:它正是輸入測(cè)試用例列的內(nèi)容。一個(gè)測(cè)試套件中的測(cè)試用例應(yīng)具有唯一的名稱(chēng)广匙。與此相關(guān)允趟,您還可以使用測(cè)試中的自動(dòng)化變量 ${TEST_NAME}來(lái)引用測(cè)試名稱(chēng)。無(wú)論何時(shí)執(zhí)行測(cè)試鸦致,它都可用潮剪,包括所有用戶(hù)關(guān)鍵字,以及測(cè)試設(shè)置和測(cè)試拆解分唾。

[Documentation]可以為測(cè)試用例設(shè)置文檔抗碰。該文本顯示在命令行輸出中,以及生成的測(cè)試日志和測(cè)試報(bào)告绽乔。

如果文檔很長(zhǎng)弧蝇,它可以拆分成幾個(gè) 與空格一起連接的單元格≌墼遥可以使用簡(jiǎn)單的 HTML格式看疗,并且可以使用變量使文檔動(dòng)態(tài)化。從Robot Framework 2.7開(kāi)始睦授,如果文檔分為多行两芳,則使用換行符連接多行 。如果行已經(jīng)以換行符結(jié)尾或者以轉(zhuǎn)義的反斜杠結(jié)束去枷,則不會(huì)添加換行符怖辆。

Test Case Action Argument Argument
Simple [Documentation] Simple documentation
No Operation
Splitting [Documentation] This documentation is a bit longer and it has been split into several columns.
No Operation
Many lines [Documentation] Here we have
... an automatic newline
No Operation
Formatting [Documentation] *This is bold*, _this italic_ and here is a link: http://robotframework.org
No Operation
Variables [Documentation] Executed at ${HOST} by ${USER}
No Operation

測(cè)試用例具有清晰且具有描述性的名稱(chēng)非常重要,在這種情況下删顶,它們通常不需要任何文檔疗隶。如果測(cè)試用例的邏輯需要記錄,那么通常表明測(cè)試用例中的關(guān)鍵字需要更好的名稱(chēng)并且要加強(qiáng)它們翼闹,而不是添加額外的文檔斑鼻。最后,通常使用標(biāo)簽更好地指定元數(shù)據(jù)猎荠,例如上面最后一個(gè)示例中的環(huán)境和用戶(hù)信息坚弱。

2.2.4標(biāo)記測(cè)試用例

在Robot Framework中使用標(biāo)簽是一種簡(jiǎn)單但功能強(qiáng)大的機(jī)制,用于對(duì)測(cè)試用例進(jìn)行分類(lèi)关摇。標(biāo)簽是自由文本荒叶,它們至少可用于以下目的:

  • 標(biāo)簽顯示在測(cè)試報(bào)告日志中输虱,當(dāng)然還包括測(cè)試數(shù)據(jù)中些楣,因此它們?yōu)闇y(cè)試用例提供元數(shù)據(jù)。
  • 測(cè)試用例的統(tǒng)計(jì)信息(總計(jì),通過(guò)愁茁,失敗是根據(jù)標(biāo)簽自動(dòng)收集的)蚕钦。
  • 使用標(biāo)記,您可以包含或排除要執(zhí)行的測(cè)試用例鹅很。
  • 使用標(biāo)記嘶居,您可以指定哪些測(cè)試用例被認(rèn)為是關(guān)鍵的

在本節(jié)中促煮,僅解釋了如何為測(cè)試用例設(shè)置標(biāo)記邮屁,下面列出了不同的方法。這些方法當(dāng)然可以一起使用菠齿。

  • 在設(shè)置表中強(qiáng)制標(biāo)記 Force Tags

    具有此設(shè)置的測(cè)試用例文件中的所有測(cè)試用例始終都會(huì)獲得指定的標(biāo)記佑吝。如果在測(cè)試套件初始化文件中使用它,則子測(cè)試套件中的所有測(cè)試用例都會(huì)獲得這些標(biāo)記绳匀。

  • 設(shè)置表中的默認(rèn)標(biāo)簽 Default Tags

    沒(méi)有自己[Tags]設(shè)置的測(cè)試用例會(huì)獲得這些標(biāo)記迹蛤。從Robot Framework版本2.5開(kāi)始,測(cè)試套件初始化文件中不再支持默認(rèn)標(biāo)記襟士。

  • 測(cè)試用例表中的[Tags]

    測(cè)試用例總是獲得這些標(biāo)簽盗飒。此外,它不會(huì)獲取使用默認(rèn)標(biāo)記指定的可能標(biāo)記陋桂,因此可以使用空值覆蓋默認(rèn)標(biāo)記逆趣。從Robot Framework 2.5.6開(kāi)始,也可以使用值NONE 來(lái)覆蓋默認(rèn)標(biāo)記嗜历。

  • --settag命令行選項(xiàng)

    除了他們?cè)趧e處獲得的標(biāo)簽之外宣渗,所有執(zhí)行的測(cè)試用例都使用此選項(xiàng)設(shè)置標(biāo)簽。

  • 設(shè)置標(biāo)簽Set Tags和刪除標(biāo)簽Remove Tags keywords關(guān)鍵字

    這些BuiltIn關(guān)鍵字可用于在測(cè)試執(zhí)行期間修改標(biāo)記梨州。

標(biāo)簽是自由文本痕囱,但它們已標(biāo)準(zhǔn)化,框架會(huì)將它們轉(zhuǎn)換為小寫(xiě)并刪除所有空格暴匠。如果測(cè)試用例多次獲得相同的標(biāo)簽鞍恢,則刪除除第一個(gè)之外的其他地方的標(biāo)簽∶拷眩可以使用變量創(chuàng)建標(biāo)記帮掉,當(dāng)然這些變量必須已經(jīng)存在。

Setting Value Value Value
Force Tags req-42
Default Tags owner-john smoke
Variable Value Value Value
${HOST} 10.0.1.42
Test Case Action Argument Argument
No own tags [Documentation] This test has tags owner-john, smoke, req-42
No Operation
With own tags [Documentation] This test has tags not_ready, owner-mrx, req-42
[Tags] owner-mrx not_ready
No Operation
Own tags with variables [Documentation] This test has tags host-10.0.1.42, req-42
[Tags] host-${HOST}
No Operation
Empty own tags [Documentation] This test has tags req-42
[Tags]
No Operation
Set Tags and Remove Tags Keywords [Documentation] This test has tags mytag, owner-john
Set Tags mytag
Remove Tags smoke req-*

2.2.5 setup和teardown

Robot Framework具有與許多其他測(cè)試自動(dòng)化框架類(lèi)似的測(cè)試設(shè)置測(cè)試拆卸功能窒典。簡(jiǎn)而言之蟆炊,測(cè)試設(shè)置是在測(cè)試用例之前執(zhí)行的,并且在測(cè)試用例之后執(zhí)行測(cè)試拆卸瀑志。在Robot Framework中涩搓,設(shè)置和拆卸只是可能帶有參數(shù)的普通關(guān)鍵字污秆。

設(shè)置和拆卸只能是一個(gè)關(guān)鍵字。如果他們需要處理多個(gè)單獨(dú)的任務(wù)昧甘,則可以為此目的創(chuàng)建更高級(jí)別的用戶(hù)關(guān)鍵字良拼。另一種解決方案是使用Robot Framework 2.5中添加的BuiltIn關(guān)鍵字 Run Keywords來(lái)執(zhí)行多個(gè)關(guān)鍵字。

測(cè)試拆卸在兩個(gè)方面是特殊的疾层。首先将饺,它也在測(cè)試用例失敗時(shí)執(zhí)行贡避,因此它可以用于不管測(cè)試用例狀態(tài)的情況下進(jìn)行的清理活動(dòng)痛黎。從Robot Framework 2.5開(kāi)始,即使其中一個(gè)關(guān)鍵字失敗刮吧,也會(huì)執(zhí)行拆卸中的所有關(guān)鍵字湖饱。

在測(cè)試用例文件中為測(cè)試用例指定設(shè)置或拆卸的最簡(jiǎn)單方法是使用“設(shè)置”表中的“ 測(cè)試設(shè)置”和“ 測(cè)試拆卸”設(shè)置。個(gè)別測(cè)試用例也可以有自己的設(shè)置或拆卸杀捻。它們使用測(cè)試用例表中的[Setup][Teardown]設(shè)置進(jìn)行定義井厌, 并且會(huì)覆蓋設(shè)置表的Test Setup和 Test Teardown設(shè)置。在[Setup][Teardown]設(shè)置后沒(méi)有關(guān)鍵字 意味著沒(méi)有設(shè)置或拆卸致讥。從Robot Framework 2.5.6開(kāi)始仅仆,也可以使用值NONE來(lái)指示測(cè)試沒(méi)有設(shè)置/拆卸。

Setting Value Value Value
Test Setup Open Application App A
Test Teardown Close Application
Test Case Action Argument Argument
Default values [Documentation] Setup and teardown from setting table
Do Something
Overridden setup [Documentation] Own setup, teardown from setting table
[Setup] Open Application App B
Do Something
No teardown [Documentation] Default setup, no teardown at all
Do Something
[Teardown]
No teardown 2 [Documentation] Using special NONE, works with 2.5.6
Do Something
[Teardown] NONE
Using variables [Documentation] Setup and teardown given as variables
[Setup] ${SETUP}
Do Something
[Teardown] ${TEARDOWN}

通常在創(chuàng)建類(lèi)似用例的測(cè)試用例時(shí)垢袱,術(shù)語(yǔ)前置條件后置條件優(yōu)于術(shù)語(yǔ)設(shè)置和拆卸墓拜。Robot Framework也支持這個(gè)術(shù)語(yǔ),因此前提條件是設(shè)置的同義詞请契,后置條件是拆卸的同義詞咳榜。

Test Setup Test Precondition
Test Teardown Test Postcondition
[Setup] [Precondition]
[Teardown] [Postcondition]

作為設(shè)置或拆卸執(zhí)行的關(guān)鍵字的名稱(chēng)可以是變量。通過(guò)從命令行提供關(guān)鍵字名稱(chēng)作為變量爽锥,這有助于在不同環(huán)境中進(jìn)行不同的設(shè)置或拆卸涌韩。

注意

測(cè)試套件可以自行設(shè)置和拆卸。套件設(shè)置在該測(cè)試套件中的任何測(cè)試用例或子測(cè)試套件之前執(zhí)行氯夷,同樣在它們之后執(zhí)行套件拆卸臣樱。

2.2.6測(cè)試模板

測(cè)試模板將正常的關(guān)鍵字驅(qū)動(dòng)的測(cè)試用例轉(zhuǎn)換為 數(shù)據(jù)驅(qū)動(dòng)的測(cè)試。正常測(cè)試用例的主體是由關(guān)鍵字及其可能的參數(shù)構(gòu)成的腮考,而帶有模板的測(cè)試用例僅定義了template關(guān)鍵字的參數(shù)擎淤。以下示例測(cè)試用例在功能上完全相同。

Test Case Action Argument Argument
Normal test case Example keyword first argument second argument
Templated test case [Template] Example keyword
first argument second argument

如上例所示秸仙,可以使用[Template]為單個(gè)測(cè)試用例指定模板嘴拢。另一種方法是使用 Setting表中的Test Template設(shè)置,在這種情況下寂纪,該模板將應(yīng)用于該測(cè)試用例文件中的所有測(cè)試用例席吴。[Template] 會(huì)覆蓋設(shè)置表中的Test Template設(shè)置赌结,當(dāng)[Template] 設(shè)置為一個(gè)空值,表示該用用例沒(méi)有模板孝冒,即使設(shè)置表中設(shè)置了柬姚。從Robot Framework 2.5.6開(kāi)始,也可以使用值NONE來(lái)指示測(cè)試沒(méi)有模板庄涡。

如果模板化測(cè)試用例的主體中有多個(gè)數(shù)據(jù)行量承,如下例所示,則模板將應(yīng)用于所有行穴店。這意味著多次執(zhí)行相同的關(guān)鍵字撕捍,每次執(zhí)行一次數(shù)據(jù)。模板化測(cè)試也很特殊泣洞,因此即使出現(xiàn)故障也會(huì)執(zhí)行所有輪次忧风。在正常測(cè)試中也可以使用這種continue-on-failure模式,但是通過(guò)模板化測(cè)試球凰,模式會(huì)自動(dòng)啟動(dòng)狮腿。

Test Case Action Argument Argument
Templated test case [Template] Example keyword
first round 1 first round 2
second round 1 second round 2
third round 1 third round 2

如果模板與for循環(huán)一起使用,則模板將應(yīng)用于循環(huán)內(nèi)的所有步驟呕诉。在這種情況下缘厢,continue-on-failure模式也在使用,這意味著即使存在故障甩挫,所有步驟也將使用所有循環(huán)元素執(zhí)行贴硫。

Test Case Action Argument Argument Argument
Template and for [Template] Example keyword
:FOR ${item} IN @{ITEMS}
${item} 2nd arg
:FOR ${index} IN RANGE 42
1st arg ${index}

測(cè)試模板的主要用途是減少數(shù)據(jù)驅(qū)動(dòng)測(cè)試的重復(fù)。不是在文件中對(duì)所有測(cè)試重復(fù)相同的關(guān)鍵字捶闸,而是可以在設(shè)置表中僅使用它一次夜畴。下一節(jié)將更詳細(xì)地說(shuō)明此用法。

注意

測(cè)試模板是Robot Framework 2.5中的一項(xiàng)新功能删壮。

注意

目前不能使用變量指定模板關(guān)鍵字贪绘。在將來(lái)的版本中可能會(huì)取消此限制。

2.2.7不同的測(cè)試用例風(fēng)格

可以通過(guò)幾種不同的方式編寫(xiě)測(cè)試用例央碟。描述某種工作流程的測(cè)試用例可以用關(guān)鍵字驅(qū)動(dòng)行為驅(qū)動(dòng)的方式編寫(xiě)税灌。數(shù)據(jù)驅(qū)動(dòng)的樣式可用于使用不同的輸入數(shù)據(jù)測(cè)試相同的工作流程。

關(guān)鍵字驅(qū)動(dòng)的風(fēng)格

工作流測(cè)試(例如前面描述的有效登錄測(cè)試) 是根據(jù)幾個(gè)關(guān)鍵字及其可能的參數(shù)構(gòu)建的亿虽。它們的正常結(jié)構(gòu)是首先將系統(tǒng)置于初始狀態(tài)(有效登錄示例中的打開(kāi)登錄頁(yè)面)菱涤,然后對(duì)系統(tǒng)執(zhí)行某些操作(輸入名稱(chēng)粘秆,輸入密碼收毫,提交憑證)殷勘,最后驗(yàn)證系統(tǒng)按預(yù)期運(yùn)行(歡迎頁(yè)面應(yīng)該打開(kāi))。

數(shù)據(jù)驅(qū)動(dòng)的風(fēng)格

編寫(xiě)測(cè)試用例的另一種方式是數(shù)據(jù)驅(qū)動(dòng)方法昔搂,其中測(cè)試用例僅使用一個(gè)更高級(jí)別的關(guān)鍵字玲销,通常創(chuàng)建為 用戶(hù)關(guān)鍵字,隱藏實(shí)際的測(cè)試工作流程摘符。當(dāng)需要使用不同的輸入和/或輸出數(shù)據(jù)測(cè)試相同的場(chǎng)景時(shí)贤斜,這些測(cè)試非常有用。每次測(cè)試都可以重復(fù)相同的關(guān)鍵字逛裤,但測(cè)試模板功能允許指定關(guān)鍵字只使用一次瘩绒。

Setting Value Value Value
Test Template Login with invalid credentials should fail
Test Case User Name Password
Invalid User Name invalid ${VALID PASSWORD}
Invalid Password ${VALID USER} invalid
Invalid User Name And Password invalid whatever
Empty User Name ${EMPTY} ${VALID PASSWORD}
Empty Password ${VALID USER} ${EMPTY}
Empty User Name And Password ${EMPTY} ${EMPTY}

上面的示例有六個(gè)單獨(dú)的測(cè)試,每一個(gè)都是無(wú)效的用戶(hù)/密碼組合别凹,下面的示例說(shuō)明了如何只對(duì)一個(gè)測(cè)試進(jìn)行所有組合草讶。使用測(cè)試模板時(shí)洽糟,即使出現(xiàn)故障炉菲,也會(huì)執(zhí)行測(cè)試中的所有輪次,因此這兩種樣式之間沒(méi)有真正的功能差異坤溃。在上面的示例中拍霜,單獨(dú)的組合被命名為更容易看到他們測(cè)試的內(nèi)容,但是大量的這些測(cè)試可能會(huì)弄亂統(tǒng)計(jì)數(shù)據(jù)薪介。使用哪種風(fēng)格取決于具體場(chǎng)景和個(gè)人偏好祠饺。

Test Case User Name Password
Invalid Password [Template] Login with invalid credentials should fail
invalid ${VALID PASSWORD}
${VALID USER} invalid
invalid whatever
${EMPTY} ${VALID PASSWORD}
${VALID USER} ${EMPTY}
${EMPTY} ${EMPTY}

提示

在上述兩個(gè)示例中,列標(biāo)題已更改為與數(shù)據(jù)匹配汁政。這是可能的道偷,因?yàn)樵诘谝恍?a target="_blank">中忽略除第一個(gè)之外的其他單元。

行為驅(qū)動(dòng)的風(fēng)格

也可以將測(cè)試用例編寫(xiě)為非技術(shù)項(xiàng)目利益相關(guān)者必須理解的要求勺鸦。這些可執(zhí)行要求通常稱(chēng)為驗(yàn)收測(cè)試驅(qū)動(dòng)開(kāi)發(fā) (ATDD)的基石换途。

編寫(xiě)這些需求/測(cè)試的一種方法是由行為驅(qū)動(dòng)開(kāi)發(fā)(BDD)推廣的Given-When-Then風(fēng)格。在以這種方式編寫(xiě)測(cè)試用例時(shí)懈息,初始狀態(tài)通常用一個(gè)以單詞Given開(kāi)頭的關(guān)鍵字表示辫继,操作用以When開(kāi)頭的關(guān)鍵字骇两,并用以Then開(kāi)頭的關(guān)鍵字來(lái)描述期望 配阵。如果某個(gè)步驟有多個(gè)操作棋傍,則可以使用以And開(kāi)頭的關(guān)鍵字。

Test Case Step
Valid Login Given login page is open
When valid username and password are inserted
and credentials are submitted
Then welcome page should be open
忽略Given/When/Then/AND前綴

如果找不到與全名匹配的關(guān)鍵字麸拄,則在搜索匹配關(guān)鍵字時(shí)刪除Given拢切,When,Then和And前綴主穗。這適用于用戶(hù)關(guān)鍵字和庫(kù)關(guān)鍵字忽媒。例如,在以上示例中打開(kāi)給定登錄頁(yè)面可以實(shí)現(xiàn)為具有或不具有單詞Given的用戶(hù)關(guān)鍵字金赦。忽略前綴還允許使用具有不同前綴的相同關(guān)鍵字夹抗。例如 Welcome page should be open也可以用作And welcome page should be open杏愤。

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

在編寫(xiě)具體示例時(shí)珊楼,能夠?qū)?shí)際數(shù)據(jù)傳遞給關(guān)鍵字實(shí)現(xiàn)是很有用的。用戶(hù)關(guān)鍵字通過(guò)允許將參數(shù)嵌入關(guān)鍵字名稱(chēng)來(lái)支持此功能已慢。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市膜楷,隨后出現(xiàn)的幾起案子把将,更是在濱河造成了極大的恐慌,老刑警劉巖催训,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異采驻,居然都是意外死亡礼旅,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)汰翠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)芜茵,“玉大人佛纫,你說(shuō)我怎么就攤上這事跟磨〉志校” “怎么了僵蛛?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)驼侠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)笋熬,這世上最難降的妖魔是什么胳螟? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蔬捷,結(jié)果婚禮上铡俐,老公的妹妹穿的比我還像新娘审丘。我一直安慰自己,他們只是感情好脓钾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著握截,像睡著了一般谨胞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上康聂,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音辜伟,去河邊找鬼。 笑死旱捧,一個(gè)胖子當(dāng)著我的面吹牛氓癌,可吹牛的內(nèi)容都是我干的贪婉。 我是一名探鬼主播疲迂,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼优质!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起避乏,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎铆帽,沒(méi)想到半個(gè)月后爹橱,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡组砚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盆偿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片揍鸟。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腥泥,靈堂內(nèi)的尸體忽然破棺而出蛔外,到底是詐尸還是另有隱情夹厌,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布或南,位于F島的核電站采够,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏冀瓦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一洲炊、第九天 我趴在偏房一處隱蔽的房頂上張望询微。 院中可真熱鬧,春花似錦藻雌、人聲如沸胯杭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)太闺。三九已至跟束,卻和暖如春冀宴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逃延。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工揽祥, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留府树,地道東北人料按。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓垄潮,卻偏偏與公主長(zhǎng)得像弯洗,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子果正,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理秋泳,服務(wù)發(fā)現(xiàn),斷路器辖众,智...
    卡卡羅2017閱讀 134,659評(píng)論 18 139
  • 黑盒測(cè)試案例設(shè)計(jì)技術(shù)篇 1 概述 本章介紹黑盒測(cè)試的概念和進(jìn)行黑盒測(cè)試的目的與意義变骡,及關(guān)于等價(jià)類(lèi)劃分渊胸、邊界值分析蹬刷、...
    西邊人閱讀 16,924評(píng)論 0 41
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架办成,建立于...
    Hsinwong閱讀 22,409評(píng)論 1 92
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常而克。 O...
    我想起個(gè)好名字閱讀 5,320評(píng)論 0 9
  • 產(chǎn)假結(jié)束回去上班的第一天,老媽打電話問(wèn)我還適應(yīng)嗎碎绎?有沒(méi)有因?yàn)椴溉槠诙活I(lǐng)導(dǎo)冷遇筋帖?我興高采烈地告訴媽媽?zhuān)粌H沒(méi)有日麸,而...
    后知后覺(jué)人閱讀 222評(píng)論 0 1