Robot Framework關鍵字,變數,迴圈
Robot Framework關鍵字,變數,迴圈
關鍵字的使用
RF的官方文件
-
library裡面
*** Test Cases ***
測試1
${var} set variable hello #給var賦值變數為hello set variable是關鍵字
Should Be Equal ${var} helle #比較var和helle是不是相等。*** Test Cases ***
測試1
${var} set variable hello #數字也會轉化成字串
Should Be Equal ${var} helle 變數不是hello #msg預設是none,添加了msg值,對錯誤資訊可以看的更加清晰結果: 變數不是hello: hello != helle
*** Test Cases ***
測試1
${var} set variable 這是日誌裡面要記錄的內容
Log ${var} #會把變數的值列印到日誌裡面
常用關鍵字
-
Import Library #用的比較少,一般是一個case引用一個
-
Should Be Equal #相等
-
Should Contain #包含
-
set variable #設定變數
-
log to console #直接列印到控制檯的
-
log #列印到log檔案
-
sleep #1d 睡一天,1m 睡一分鐘,預設是秒,可以不寫
-
convert to integer #轉化成整型
-
convert to number #轉化成浮點型整數
*** Test Cases ***
驗證
${num}= convert to integer 32 #把32轉化成整形 結果32 log to console ${num} ${num2}= convert to Number 32 #把32轉化成浮點型 結果32.0 log to console ${num2} log to console ${32} #用數字變數。可以直接轉化成數字整型 結果32 log to console ${32+4*6} #也可以像py裡面的數字表達式 結果56 *** Test Cases *** 測試1 Should Be Equal 10 010 #字串物件比較,結果是False Should Be Equal As Integers 10 010 #轉換成數字物件比較,結果是true。傳給關鍵字的時候,是字串。在關鍵字內部轉成整數的
rf裡面的should be true關鍵字,會傳遞給py裡面的eval()函式比較。
eval(“4+8”) #結果12 eval()更智慧的識別表示式
驗證 should be true
*** Test Cases ***
驗證
${num}= convert to integer 20 #把20轉化為一個整型
should be true ${num}>19 #等價於python裡面eval("20>19") ${num}本身是整型,後面>19又會變成字串。should be true會把它轉化成eval函式:eval("20>19")是ture。傳遞給should be true的是"20>19",相當於eval("20>19")是ture。
驗證 should be true
*** Test Cases ***
驗證
${str1}= set variable hello #設定變數,rf裡面的字串是不需要加“”的
should be true ${str1}==hello #NameError: name 'hello' is not defined。${str1}的內容是hello,hello == hello,交給should be true的時候就是呼叫python裡面的eval()函式。相當於eval(“hello == hello”) python裡面也會報錯。name 'hello' is not defined。hello是當做變數的
驗證 should be true
*** Test Cases ***
驗證
${str1}= set variable hello
should be true '${str1}'=='hello' #'${str1}'是把變數裡面的值取出來,然後“”變成str型別。然後兩個字串相比。eval(“"hello "== "hello"”) 結果pass
驗證 should be true
*** Test Cases ***
驗證
${str1}= set variable hello
should be true $str1=='hello' #結果pass,這種方式是直接引用變數,$str1是變數名,比如a。$str1[2],或$str1[“key”]和python一樣,列表和字典用法
# str1取的變數的值
**
認識測試庫
**
通常,關鍵字是由測試庫提供的
測試庫就是python模組檔案
python測試庫裡面的關鍵字實現方式
-
類的方法
-
函式
-
RF指令碼使用函式名,方法名,大小寫不敏感
RF如何發現庫的路徑的
- 和python程式一致,sys.path
有引數的關鍵字,傳參的方法
*** Settings ***
Library mylib3
*** Test Cases ***
測試
${var1} set variable 123 #通過關鍵字設定變數123
printarg ${var1} #printarg是在mylib3裡面定義的函式,${var1}是傳的字串。直接在關注簡直後面填引數就行了
${var2} convert to integer 123 #通過關鍵字轉化成整型123
printarg ${var2} #這裡傳了一個整型的引數
${var2} convert to integer 23 #通過關鍵字轉化成整型123
printarg ${var2} hello #這裡傳了一個整型的引數和一個字串的引數
庫的匯入
-
除了builtin庫,無需匯入宣告 #類似於python中的內建庫,無需匯入申明就可以使用
-
其他庫必須要宣告匯入 #在RF中匯入庫的時候,庫的名字是大小寫敏感的
-
庫的匯入方式
在用例中使用關鍵字import library匯入 在settings表中宣告匯入
RF中的變數
RF中的變數,實際上就是一個Python變數
它指向一個python物件
RF變數對應的是什麼Python物件,就是什麼型別的物件
RF中,對變數有什麼不用的用法
Scalar方式(最常用的)
${var} #以$符{}加變數名字定義的變數,傳遞給關鍵字作為引數使用的時候,就是直接把這個變數所對應的python物件傳遞給關鍵字的函式。是數字就是傳數字,是字串就傳字串,列表就是列表,字典就是字典
直接把變數所對應的Python物件傳遞給關鍵字 對應的函式
List方式
@{var}
展開的List中的每個元素,作為多個引數傳入
Dictionary方式
&{var}
展開的Dict中的每個元素,作為多個引數傳入
訪問環境變數 %{env_var}
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
Printarg %{path} #列印path環境變數
解釋Scalar方式:
#驗證Scalar方式傳進去的是什麼,就是什麼
#模組mylib3中的函式,下面rf中呼叫
#def returnlist():
# return [1,2,3]
#
#def returndict():
# return {
# 'ele1' : 'male',
# 'ele2' : 'female'
# }
驗證Scalar方式傳進去的是列表,就是列表
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returnlist
Printarg ${var1} #傳遞給Printarg關鍵字的引數就是[1,2,3]
驗證Scalar方式傳進去的是字典,就是字典
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returndict
Printarg ${var1} ##傳遞給Printarg關鍵字的引數就是{ 'ele1' : 'male','ele2' : 'female'}
驗證Scalar方式傳進去的是組合的字元,就是字串
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returnlist
Printarg 54${var1} #如果這樣傳。傳遞給Printarg關鍵字的引數54[1,2,3],是字串
List方式(@{var})
展開的List中的每個元素,作為多個引數傳入
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returnlist
Printarg @{var1} #如果這樣傳。傳遞給Printarg關鍵字的引數分別是1,2,3 是三個引數。
展開的List中的每個元素,作為多個引數傳入。也可以像py一樣取值
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returnlist #定義的時候一般寫${var1},關鍵看傳參的時候這麼傳
Printarg @{var1}[1] #如果這樣傳。傳遞給Printarg關鍵字的引數是第二個元素2
Dictionary方式
展開的Dict中的每個元素,作為多個引數傳入
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returndict
Printarg &{var1} ##傳遞給Printarg關鍵字的引數就是'ele1' : 'male'和'ele2' : 'female'這兩個引數
展開的Dict中的每個元素,作為多個引數傳入,也可以通過鍵取值
*** Settings ***
Library mylib3
*** Test Cases ***
驗證
${var1}= returndict
Printarg &{var1}[ele1] ##傳遞給Printarg關鍵字的引數就是'male'
**
RF用:FOR來實現迴圈
**
遍歷List變數
IN RANGE的用法
一個檢查學科的例子
經典方法
evaluate方法
*** Settings ***
Library mylib3
*** Test Cases ***
Example 1
:FOR ${animal} IN 貓 狗 豬
\ Log To Console ${animal}
\ Log To Console 第二行
Log To Console 迴圈外面
#結果:
貓
第二行
狗
第二行
豬
第二行
迴圈外面
*** Settings ***
Library mylib3
*** Test Cases ***
遍歷list變數
${list}= returnlist
:FOR ${index} IN @{list} #這裡用的是@{list}等價於1,2,3
\ Log To Console ${index}
#結果:
1
2
3
要迴圈固定的次數要range()
*** Settings ***
Library mylib3
*** Test Cases ***
range用法
:FOR ${index} IN RANGE 0 10 #這裡range和py中的一樣,可以直接寫10,也可以0 10
\ Log To Console ${index}
#結果:
0
1
2
3
4
5
6
7
8
9