1. 简介
变量是Robot Framework的一个不可或缺的特性,变量可以在测试的大多数地方被使用,大多数是用在测试用例和关键字中,在setting中的值都是允许使用变量的。
Robot Framework有3种不同的变量,分别是:Scalar、List、Dictionary变量,分别使用 ”,List变量标识符为“@”,Dictionary变量标识符为“&”。
哪些情况下会使用到变量咧?如下所示:
- 测试数据中有字符串或数值经常改变,当使用变量之后,只需要在一个地方更改就可以改变在所有地方的引用值。
- 创建独立于系统和操作系统的测试数据时。使用变量而不是硬编码字符串可以大大简化(例如, {HOST} 代替10.0.0.1:8080)。在启动测试时可以从命令行设置变量,这样更改系统特定的变量很容易(例如–variable HOST:10.0.0.2:1234 –variable RESOURCES:/opt/resources)。使用变量有助于本地化测试,可以使用不同的字符串运行相同的测试。
- 当需要将字符串以外的对象作为关键字的参数时,必须要使用到变量。
- 当不同的关键字,甚至在不同的测试库中,需要进行值的传递时。可以将一个关键字的返回值分配给变量,并将其作为参数传递给另一个变量。
- 当测试数据中的值很长或者很复杂时可以使用变量代替长的或复杂的值。例:${URL}比短于http://long.domain.name:8080/path/to/service?foo=1&bar=2&zap=42。
2. 变量类型
Robot Framework的变量不区分大小写,并且忽略空格和下划线。建议全局变量的命名采用大写字母,如: {EVN_VAR};测试用例或用户关键字中所使用的变量命名采用小写字母,如 {myVar}。
建议变量在定义和使用的时候保持一致的名称。变量名主要使用字母表字符(a-z,A-Z),数字(0-9),下划线(_)和空格。
3. 创建变量(Creating Variables)
有下面几类方式可以创建变量
- 通过Variable Table
- 在Variable File中定义
- 使用命令行参数选项
- 来自关键字的返回值
- 内建变量设置关键字
3.1. 通过 Variable Table方式创建变量
通过Variable Table的方式一般是在Test Case File和Resource File中 Variable Table中创建。这是一种集中创建变量的方式,变量值只能为字符串,不能动态创建。
在测试用例文件和测试资源文件中创建变量类似,以在Test Case File中的Variable Table中创建变量为例(RIDE工具演示):
3.1.1. 创建Scalar变量
RIDE中新建工程“RF_Demo”
新建目录型的“Variable”测试套
新建“TestSuite1”测试用例
在“TestSuite1”测试用例中新建几个测试变量,输入变量名,输入变量值,点击“OK”按钮:
RIDE界面显示情况:
测试脚本代码:
*** Variables ***
${NAME} Robot Framework
${VERSION} 2.0
${ROBOT} ${NAME}${VERSION}
${ZERO} ${EMPTY}
*** Test Cases ***
新建一个Test Case“Create_Scalar1”通过Log关键字使用一下新建的Scalar变量:
Create_Scalar1代码:
*** Variables ***
${NAME} Robot Framework
${VERSION} 2.0
${ROBOT} ${NAME}${VERSION}
${ZERO} ${EMPTY}
*** Test Cases ***
Create_Scalar1
Log ${NAME}
Log ${VERSION}
Log ${ROBOT}
Log ${ZERO}
运行后结果:
3.1.2. 创建List变量
在“Variable”变量目中新建Test Suite文件“TestSuite2”;
在“TestSuite2”中通过“New List Variable”或“Eidt”界面中的“Add List”按钮都可以创建List变量
如下:
新建几个List变量:
创建好后可以在RIDE中显示:
变量代码表示:
*** Variables ***
@{NAMES} SCOTT 小明 小红
@{NAMES2} @{NAMES1} 小小
@{NOTHING}
@{MANY} one two three four five six seven
... eight
*** Test Cases ***
新建一个Test Case“Create_List1”通过Log关键字使用一下新建的List变量:
运行结果:
报错了,原因是Log关键字不能打印多个值,换成 Log Many关键字打印List变量
换成“Log Many”关键字打印:
Create_List代码:
*** Variables ***
@{NAMES} SCOTT 小明 小红
@{NAMES2} @{NAMES} 小小
@{NOTHING}
@{MANY} one two three four five six seven
... eight
*** Test Cases ***
Create_List1
Log Many @{NAMES}
Log Many @{NAMES2}
Log Many @{NOTHING}
Log Many @{MANY}
再次运行结果:运行成功并打印出值
3.1.3. 创建Dictionary变量
创建dictionary变量语法为:“name=value”或者已有的dictionary变量赋值给新变量。
在“Variable”变量目中新建Test Suite文件“TestSuite3”;
在“TestSuite2”中通过“New List Variable”或“Eidt”界面中的“Add Dict”按钮都可以创建Dictionary变量
如下:
新建几个Dictionary变量:
创建好后再RIDE中展示效果:
脚本代码情况:
*** Variables ***
&{USER1} name=小明 address=xxx age=99
&{USER2} name=小红 address=yyy age=88
&{MANY} first=1 second=${2} ${3}=third
&{EVEN_MORE} &{MANY} first=override empty= =empty key\=here=value
新建Test Case“Create_Dict”打印新建的Dictionary变量:
Create_Dict代码:
*** Variables ***
&{USER1} name=小明 address=xxx age=99
&{USER2} name=小红 address=yyy age=88
&{MANY} first=1 second=${2} ${3}=third
&{EVEN_MORE} &{MANY} first=override empty= =empty key\=here=value
*** Test Cases ***
Create_Dict
Log Many ${USER1.name} &{USER1}[address] &{USER1}[age]
Log Many &{USER2}[name] &{USER2}[address] &{USER2}[age]
Log Many &{EVEN_MORE}[first] &{EVEN_MORE}[second] &{EVEN_MORE}[${3}]
运行结果: