变量及其使用规则对于一门编程语言来说是最基本的,就像我们小学的乘法口诀一样,它们会贯穿整个语言的学习过程。学习RobotFramework也是一样,应该清楚并理解其中的各种变量以及使用规则,这样才能在以后的学习或者工作中做到事半功倍。
RF中的变量和python中的变量一样,没有整型,浮点型,字符串这样的类型定义,不需要事先声明,只需要赋值即可使用。其中标量,列表和字典是RF中最常用的三个变量,具体见下。
RF中的Scalar变量用符号“${}”表示,这是一种单一的赋值变量。它的用法一般有两种,一种是在变量文件中(Variables)使用,另外一种是在测试案例(TestCases)中使用,如下。
格式
*** Variables ***
${变量名} 值
示例
${初始时间} 20230815
在用例中使用Scalar 变量需要使用关键字Set Variable 来创建并赋值,Set Variable是RF内置库BuiltIn中的关键字,不用导入就可以使用。
示例:
*** Settings ***
Documentation 常用变量
*** Test Cases ***
csdn case1
[Documentation] 练习
${var1} set variable Hello RF
log ${var1}
*** Settings ***
Documentation 常用变量
*** Test Cases ***
csdn case1
[Documentation] 索引,切片操作
${var1} set variable acdeefg
log 索引:${var1}[1]
log 切片:${var1}[-3:]
RF中的List变量用“@{}”表示,跟python中的列表差不多。它也一般用在变量文件中(Variables)和测试用例(TestCases)中,具体如下
格式
@{变量名} 值1 值2 ... 值n
示例
*** Variables ***
@{列表1} 1 2 3
在TestCases中创建Scalar变量时使用了Builtin中内置set variable 关键字,set variable不仅可以创建Scalar变量,也可以用来创建List变量,如下
*** Settings ***
Documentation 常用变量
*** Variables ***
@{列表1} 1 2 3
*** Test Cases ***
csdn case1
[Documentation] 列表变量
${列表2} set variable Python Java C#
log ${列表2}
log ${列表1}
除了用set variable来创建List变量外,还可以用RF自带库Collections中的Create List关键字来创建List。如下
*** Settings ***
Documentation 常用变量
*** Variables ***
@{列表1} 1 2 3
*** Test Cases ***
csdn case1
[Documentation] 列表变量
${列表2} set variable Python Java C#
${列表3} create list a b c
log ${列表2}
log ${列表1}
log ${列表3}
Collections库是专门用来处理List和Dictionary的,所以对List的一些操作也是由Collection库里面的一些关键字来处理的,如下。
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 列表变量
${list} create list a b c
append to list ${list} d
log ${list}
insert into list ${list} 0 1 #第二个参数是索引位置,第三个参数是要插入的值
log ${list}
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 列表变量
${list} create list a b c e f
remove from list ${list} 0 #1是索引
log ${list}
remove values from list ${list} f #f是值
log ${list}
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 列表变量
${list} create list a b c e f
log ${list}[-1]
log ${list}[:3]
log ${list}[-3:]
RF中的Dictionary变量用“&{}”表示,跟python中的字典一样。它也一般用在变量文件中(Variables)和测试用例(TestCases)中,具体如下
格式
*** Variables ***
&{变量名} key1=value1 key2=values2 ... keyn=valuen
示例
*** Variables ***
&{用户1} 用户名=张三 年龄=25 地址=深圳
Scalar变量和List变量可以用BuiltIn库中的set variable 关键字来创建,但是BuiltIn中没有处理Dictionary的关键字,得用Collections库中的关键字create dictionary来创建,如下
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 列表变量
${用户信息} create dictionary 用户名=张三 地址=深圳
log ${用户信息}
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 字典变量
${用户信息} create dictionary 用户名=张三 地址=深圳
log ${用户信息}[用户名]
log ${用户信息.地址}
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 字典变量
${用户信息} create dictionary 用户名=张三 地址=深圳
set to dictionary ${用户信息} 电话=18586971234 邮箱=123@163.com
log ${用户信息}
*** Settings ***
Documentation 常用变量
Library Collections
*** Test Cases ***
csdn case1
[Documentation] 字典变量
${用户信息} create dictionary 用户名=张三 地址=深圳
... 电话=18586971234 邮箱=123@163.com
#删除指定的key
remove from dictionary ${用户信息} 地址
log ${用户信息}
#删除指定key,并返回key对应的value
${邮箱} pop from dictionary ${用户信息} 邮箱
log ${用户信息}
#只保留指定的key,删除其它key
keep in dictionary ${用户信息} 用户名
log ${用户信息}
在RF中有些变量不用赋值,它本身就有某个或某些特定的值,可以直接使用,这些变量就是RF内置的变量。工作中熟练使用这些变量,会做到事半功倍。
为了能够让测试数据和具体的操作系统独立开来,RF内置了一些来处理不同的系统,如下。
RF中内置的自动变量指的是一些随着测试用例执行过程自动赋值的变量,用来存储案例状态,案例名字,测试套件等相关的信息,如下
RF中一般默认对象都是字符串形式的,在比较旧的版本中设置一个变量,赋值是数字RF也会当做字符串处理,在最新的版本6.1中,变量赋值是数字的就不会被当做是字符串处理了。数字的表示有两种方法,一种是用关键字set variable 创建变量赋值,另外一种是${数字},如下
在RF中用${SPACE}表示空格,
${EMPTY}表示空,空格可以用数字一起使用,如下
对于Java返回的NULL,RF中用${null}表示
Python中返回的None,RF中用${none}表示
RF有自己的时间格式,可以直接用数字+时间单位的格式表示,RF支持的时间单位格式如下
平常工作中打印变量的时候一般使用Log打印的比较多,但是Log不能直接打印List和Dictionary,打印List和Dictionar可以使用Log Many关键字,如下
可以看到Log Many是逐个打印List和Dictionary里面的值,但是有时候只想看一下,并不想逐个打印,这个时候就可以用 $ 将List和Dictionary转换成标量Scalar,然后用Log打印,就相当于python
中的str()函数强制转换类型。如下