如果你還想從頭學起Robot Framework,可以看看這個系列的文章哦!
https://www.cnblogs.com/poloyy/category/1770899.html
常量的栗子
常量就不多說了吧,大家都懂!直接看栗子
上面 log 關鍵字后面跟的參數都是常量,且類型均是字符串【RF 里面,常量默認是字符串類型,如果需要整形、浮點數、列表,需要調用關鍵字來轉換 or 生成】
變量的介紹
- RF中的變量,實質上就是一個Python變量,它指向一個Python對象
- 所以RF變量對應的是什么Python對象,它就是什么類型的對象
變量標識符
{變量名}
{} 就是變量標識符
RF 的變量類型
變量類型 | 變量中文 | 寫法 |
scalar | 標量 | ${SCALAR} |
list | 列表 | @{LIST} |
dict | 字典 | &{DICT} |
環境變量 | 環境變量 | %{ENV_VAR} |
變量的作用就不說了哈,大家應該都知道~
變量的注意事項
- 不區分大小寫: ${var} 和 ${VAR} 指向同一個對象
- 變量名若有下划線和空格都會被忽略: ${my var} 或 ${myVar}
測試代碼
測試結果
Scalar 變量
特點
- 當傳遞 Scalar 變量給關鍵字作為參數的時候, 就是直接把它所對應的 Python 對象類型傳遞給關鍵字對應的函數
- 每個 List 變量和 Dict 變量,也是 Scalar 變量
測試代碼
測試結果
知識點
- 在 Variables 表中定義變量,可以直接在變量后面跟值,不用加 set variable
- 給標量賦值,聲明變量后面可加=,也可不加
- 在 Test Cases 表中定義變量,聲明變量之后,一定要接 set variable 或 set variable if 關鍵字,然后再接需要設置的值
- 變量間,可以互相賦值
List 變量
List 變量的介紹
如果一個標量的值是一個列表,或者類似列表的其它序列,可以將該變量作為列表變量使用,格式為 @{EXAMPLE}
Test Case 表中定義列表變量的栗子
測試結果
測試代碼分成了四部分
- 聲明列表變量,有兩種聲明列表變量的方式,以及兩種生成列表值的方式
- 打印列表
- 循環打印
- 獲取列表長度
我們來看看上述 RF 代碼等價於 Python 的話,會是咋樣的
@{lists} 和 ${lists} 的區別
- 列表變量也是標量的一種,只是值是列表,所以可以看成列表變量
- ${lists} 可以看成是一個列表整體, @{lists} 可以看成整體拆成一個個單獨的元素
- ${lists} 在 Python 里面就是一個 list ,然后 @{lists} 就是展開其 lists 中的每個元素,作為多個參數傳入,和 *args 一樣效果,在Python 里叫可變參數【可看這篇博文:https://www.cnblogs.com/poloyy/p/12526592.html】
我們將它們等價到Python 里面去看,這樣更好理解
def printarg(*args): if len(args) == 0: print('** no args **') else: print('** args are **') print('-----------------') for one in args: print(repr(one)) print('-----------------') # 等價於 RF 的寫法:printarg ${lists} printarg(lists) # 等價於 RF 的寫法:printarg @{lists} printarg(*lists)
測試結果
** args are ** ----------------- [1, 2, 3, 4, 5] ----------------- ** args are ** ----------------- 1 2 3 4 5 -----------------
獲取列表變量中的值
一共兩種獲取的格式
- ${變量名}[下標值]
- ${變量名[下標值]}
測試結果
知識點
- 系統也提示啦,我們應該用 ${list}[0] 這種格式來代替 @{list} 獲取列表的某個值
- 下標也是從 0 開始
- 下標可以傳變量 ${list}[${index}]
Dict 變量
Dict 變量介紹
如果一個標量的值是一個字典,可以將該變量作為字典變量使用,格式為 &{EXAMPLE}
Test Case 表中定義字典變量的栗子
測試結果
我們來看看上述 RF 代碼等價於 Python 的話,會是咋樣的
&{dict} 和 ${dict} 的區別
- 字典變量也是標量的一種,只是值是字典,所以可以看成字典變量
- ${dict} 可以看成是一個完整的字典對象, &{dict} 可以看成整體拆成一個個單獨的鍵值對
- ${dict} 在 Python 里面就是一個 dict ,然后&{dict} 就是展開其 dict 中的每個鍵值對,作為多個參數傳入,和 **kwargs 一樣效果,在Python 里叫關鍵字參數【可看這篇博文:https://www.cnblogs.com/poloyy/p/12526592.html】
我們將它們等價到Python 里面去看,這樣更好理解
def printarg(**kwargs): if len(kwargs) == 0: print('** no kwargs **') else: print('** kwargs are **') print('-----------------') for k, v in kwargs.items(): print(repr(k) + ':' + repr(v)) print('-----------------') # 等價於 RF 的寫法:printarg &{dicts1} printarg(**dicts1)
測試結果
** kwargs are ** ----------------- 'name':'yy' 'age':19 -----------------
獲取字典變量中的值
只有一種獲取格式: ${dicts}[key]
測試結果
知識點
- 系統也提示啦,我們應該用 ${dicts}[key] 代替 &{dicts}[key]
- 鍵可以傳變量 &{DICT}[${KEY}]
- 重點: ${dict.key} 會報錯哦,不可取