Robot Framework(12)- 詳細解讀 RF 的變量和常量


如果你還想從頭學起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 表中定義列表變量的栗子

測試結果

測試代碼分成了四部分

  1. 聲明列表變量,有兩種聲明列表變量的方式,以及兩種生成列表值的方式
  2. 打印列表
  3. 循環打印
  4. 獲取列表長度

我們來看看上述 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
-----------------

 

獲取列表變量中的值

一共兩種獲取的格式

  1.  ${變量名}[下標值] 
  2.  ${變量名[下標值]} 

測試結果

知識點

  • 系統也提示啦,我們應該用 ${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} 會報錯哦,不可取

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM