天天看點

Robot Framework之資料驅動之Template模闆

一、資料驅動之Template模闆

這裡我們介紹RobotFramework一個很有用的功能——測試模闆。測試用例中的關鍵字,例如:

Robot Framework之資料驅動之Template模闆

一個關鍵字測試模闆

運作此用例時,隻會執行一次。但有時候我們需要連續執行這個關鍵字。如果我們連續寫這個關鍵字,用例會顯得很臃腫。

RobotFramework提供了一個解決方案,在關鍵字前面加上一個[Template],表示這個用例是一個“測試模闆”

Robot Framework之資料驅動之Template模闆

多個關鍵字測試模闆

執行結果:

20171208 08:53:58.974 : INFO : 旺财

20171208 08:53:58.974 :  INFO : 小四

20171208 08:53:58.984 :  INFO : 李武

這個測試用例裡,“log”關鍵字被連續執行了三次。與普通的關鍵字寫法不同,帶有[Template]的關鍵字的參數不能和關鍵字同行。每帶有一行參數,關鍵字就需要執行一次。熟悉

QTP

的朋友可能會覺得似曾相識

需要特别注意的是,一個用例中隻能使用一個[Template],不能多次使用。也不能帶[Template]的關鍵字和普通的關鍵字混合使用。 利用“[Template]”,robotFramework可以輕松的實作資料驅動

二、測試模闆:關鍵字驅動 => 資料驅動

關鍵字驅動: 用例主體由若幹關鍵字+參數構成  

資料驅動,:用例主體隻由Template關鍵字的參數構成

用途舉例:

對每個測試用例,或者一個測試檔案中的所有用例,重複執行同一個關鍵字多次(使用不同資料),也可以隻針對測試用例,或者每個測試檔案隻執行一次,模闆關鍵字可以接受普通的位置參數,命名參數,關鍵字名中可以使用參數,不可以使用變量定義模闆關鍵字。

三、樣例

Demo1:[Template]會覆寫Setting Table中的template設定:如果[Template]為空值,意味着沒有模闆

* Test Cases

Normal test case

Example keyword first argument second argument

Templated test case

[Template] Example keyword

first argument second argument

Demo2:對于多行資料,模闆關鍵字會逐行調用執行,一次一行 如果其中有些失敗,其他也會執行。 對于普通用例的continue on failure模式,對于模闆關鍵字是預設行為。

Settings

Test Template Example keyword

Test Cases

first round 1 first round 2

second round 1 second round 2

third round 1 third round 2

Demo3:模闆關鍵字支援嵌入參數的文法,關鍵字名字就作為參數的持有者,在實際執行中這些參數會被模闆關鍵字解析出實際的參數,傳遞給低級的底層關鍵字作為參數

Normal test case with embedded arguments

The result of 1 + 1 should be 2

The result of 1 + 2 should be 3

Template with embedded arguments

[Template] The result of ${calculation} should be ${expected}

1 + 1 2

1 + 2 3

Keywords

The result of ${calculation} should be ${expected}

${result} = Calculate ${calculation}

Should Be Equal ${result} ${expected}

Demo4:帶有for循環的模闆關鍵字

Template and for

:FOR ${item} IN @{ITEMS}

\ ${item} 2nd arg

:FOR ${index} IN RANGE 42

\ 1st arg ${index}

四、不同的測試用例風格

關鍵字驅動

1.描述工作流

2.若幹關鍵字和他們必要的參數

資料驅動

1.針對相同工作流,執行不同的輸入資料

2.隻使用一個進階的使用者關鍵字,其中定義了工作流,然後使用不同的輸入和輸出資料測試相同的場景

3.每個測試中可以重複同一個關鍵字,但是test template功能隻允許定義以此被使用的關鍵字

行為驅動:

2.Acceptance Test Driven Development, ATDD

3.Specification by Example

4.BDD's Given-When-Then

5.And or But,如果測試步驟中操作較多

6.支援嵌入資料到關鍵字名

Demo1:

Test Template Login with invalid credentials should fail

Test Cases USERNAME PASSWORD

Invalid User Name invalid ${VALID PASSWORD}

Invalid Password ${VALID USER} invalid

Invalid User Name and Password invalid invalid

Empty User Name ${EMPTY} ${VALID PASSWORD}

Empty Password ${VALID USER} ${EMPTY}

Empty User Name and Password ${EMPTY} ${EMPTY}

Demo2:

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}

Demo1和Demo2都是資料驅動的test template樣例。

Demo1有指令列,友善閱讀了解; test template在setting table中定義; 每行有名字也友善檢視結果(如果行數不是太多的話)

Demo2在一個用例中完成所有的事情

繼續閱讀