Robot Framework(12)- 详细解读 RF 的变量和常量(上)

简介: Robot Framework(12)- 详细解读 RF 的变量和常量(上)

如果你还想从头学起Robot Framework,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1770899.html

 

常量的栗子


常量就不多说了吧,大家都懂!直接看栗子

image.png

上面 log 关键字后面跟的参数都是常量,且类型均是字符串【RF 里面,常量默认是字符串类型,如果需要整形、浮点数、列表,需要调用关键字来转换 or 生成】

 

变量的介绍


  • RF中的变量,实质上就是一个Python变量,它指向一个Python对象
  • 所以RF变量对应的是什么Python对象,它就是什么类型的对象

变量标识符

{变量名}

{} 就是变量标识符

 

RF 的变量类型


变量类型 变量中文 写法
scalar 标量 ${SCALAR}
list 列表 @{LIST}
dict 字典 &{DICT} 
环境变量 环境变量 %{ENV_VAR}

变量的作用就不说了哈,大家应该都知道~

 

变量的注意事项


  • 不区分大小写: ${var}${VAR} 指向同一个对象
  • 变量名若有下划线和空格都会被忽略: ${my var}  或  ${myVar}

测试代码

image.png

Scalar 变量


特点

  • 当传递 Scalar 变量给关键字作为参数的时候, 就是直接把它所对应的 Python 对象类型传递给关键字对应的函数
  • 每个 List 变量和 Dict变量,也是 Scalar变量

测试代码

image.png

知识点

  • Variables 表中定义变量,可以直接在变量后面跟值,不用加 set variable
  • 给标量赋值,声明变量后面可加=,也可不加
  • Test Cases 表中定义变量,声明变量之后,一定要接 set variableset variable if 关键字,然后再接需要设置的值
  • 变量间,可以互相赋值

 

List 变量


List 变量的介绍

如果一个标量的值是一个列表,或者类似列表的其它序列,可以将该变量作为列表变量使用,格式为 @{EXAMPLE}

 

Test Case 表中定义列表变量的栗子

image.png


image.png

测试代码分成了四部分

  1. 声明列表变量,有两种声明列表变量的方式,以及两种生成列表值的方式
  2. 打印列表
  3. 循环打印
  4. 获取列表长度

我们来看看上述 RF 代码等价于 Python 的话,会是咋样的

image.png

@{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. ${变量名[下标值]}

image.png

知识点

  • 系统也提示啦,我们应该用 ${list}[0] 这种格式来代替 @{list} 获取列表的某个值
  • 下标也是从 0 开始
  • 下标可以传变量 ${list}[${index}]

 

Dict 变量


Dict 变量介绍

如果一个标量的值是一个字典,可以将该变量作为字典变量使用,格式为  &{EXAMPLE}

 

Test Case 表中定义字典变量的栗子

image.png

我们来看看上述 RF 代码等价于 Python 的话,会是咋样的

image.png


&{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]

image.png

知识点

  • 系统也提示啦,我们应该用 ${dicts}[key] 代替 &{dicts}[key]
  • 键可以传变量 &{DICT}[${KEY}]
  • 重点:${dict.key} 会报错哦,不可取

 



相关文章
|
6月前
|
存储 数据可视化 编译器
learn_C_deep_1 (C程序补充知识、变量的声明和定义、声明和定义的区别)
learn_C_deep_1 (C程序补充知识、变量的声明和定义、声明和定义的区别)
|
6月前
|
Python
解释Python中的ABC(Abstract Base Classes)是什么,如何使用它们?
【2月更文挑战第4天】【2月更文挑战第8篇】解释Python中的ABC(Abstract Base Classes)是什么,如何使用它们?
605 2
|
6月前
|
索引 Python
什么是Python中的魔法方法(Magic Methods)?给出一些例子。
什么是Python中的魔法方法(Magic Methods)?给出一些例子。
49 0
|
存储 传感器 Python
[oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment
[oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment
95 0
[oeasy]python0132_变量含义_meaning_声明_declaration_赋值_assignment
|
程序员 Python
笨办法学 Python--跟书练习四~变量(variable)和命名
笨办法学 Python--跟书练习四~变量(variable)和命名
111 0
笨办法学 Python--跟书练习四~变量(variable)和命名
|
机器人 Python
Robot Framework(9)- 使用变量文件
Robot Framework(9)- 使用变量文件
322 0
Robot Framework(9)- 使用变量文件
|
机器人 索引 Python
Robot Framework(13)- RF 循环的详细使用
Robot Framework(13)- RF 循环的详细使用
693 0
Robot Framework(13)- RF 循环的详细使用
|
机器人
Robot Framework(6)- BuiltIn 测试库常用的关键字列表
Robot Framework(6)- BuiltIn 测试库常用的关键字列表
258 0
Robot Framework(6)- BuiltIn 测试库常用的关键字列表
|
机器人
Robot Framework(14)- Variables 表的详细使用和具体例子
Robot Framework(14)- Variables 表的详细使用和具体例子
259 0
Robot Framework(14)- Variables 表的详细使用和具体例子
|
机器人 Python
Robot Framework(15)- 扩展关键字
Robot Framework(15)- 扩展关键字
206 0
Robot Framework(15)- 扩展关键字