RF也有变量和常量之分,在RF中每个变量都采用变量标识符$,@,&,%+变量名表示。
常用变量类型有三种,Scalar标量类型、List列表类型、Dicionary字典类型。
默认情况下,变量只在当前作用域内有效、可通过关键字Set Global Variable、Set Suite Variable和Set Test Variable来
改变变量作用域。
RF中常量分为环境常量、数值常量、特殊字符常量、系统保留常量。
在Robot Framework(RF)中,变量是一种重要的元素,用于存储和传递测试执行过程中所需的数据。RF支持多种类型的变量,每种类型的变量都有其特定的标识符和使用方式。
变量类型与标识符:
- Scalar(单值变量):用于存储单个数据值。这些变量使用“ ”作为标识符,例如 ‘ ”作为标识符,例如` ”作为标识符,例如‘{var}`。
- List(列表变量):用于存储一组数据。列表变量使用“@”作为标识符,例如
@{lvar}
。列表变量可以包含多个数据项,作为参数传递时,每个数据项都被视为一个独立的参数。 - Dict(字典变量):用于存储键值对数据。字典变量使用“&”作为标识符,例如
&{mydict1}
。字典变量中的每个键值对都可以作为一个参数进行传递。
变量声明与初始化:
- 在RF中,变量不需要特别的声明,只要有初始化赋值即可使用。初始化赋值可以在测试用例中直接进行,也可以在测试套件(TestSuite)的Variable部分进行。在测试用例中直接定义的变量是局部变量,而在测试套件Variable中定义的参数是全局变量。
- 在RF的编辑区域,可以通过右键点击TestSuite或在Edit区点击“Add Scalar”或“Add List”按钮来手动添加变量。添加后,这些变量可以在整个测试套件中被引用和使用。
变量的赋值与取值:
- 变量的赋值可以通过直接赋值、函数的返回值等方式进行。例如,在测试用例中,可以使用
${var}=SetVariable hello, world
来为Scalar变量赋值,或使用@{mylist}=Create List a b c
来创建并初始化List变量。 - 变量的取值则可以通过在测试用例或关键字中引用变量名来进行。RF会自动解析变量名并替换为相应的值。
- 变量的赋值可以通过直接赋值、函数的返回值等方式进行。例如,在测试用例中,可以使用
变量的作用域:
- 在RF中,变量的作用域取决于其定义的位置。局部变量只在其所在的测试用例或关键字中有效,而全局变量则在整个测试套件中有效。
了解并正确使用变量是编写高效、可维护的Robot Framework测试脚本的关键。通过合理定义和使用变量,可以简化测试脚本的编写过程,提高测试的可读性和可维护性。
变量作用域
一个Test Case里的变量,作用域在这个Test Case内部。
一个User Keyword里的变量,作用域在这个User Keyword内部。
一个文件型Test suite里的变量,作用域在这个Test Suite内部,所有包含在下面的Test Case也都可以使用。
RF内置变量
RF内置变量,主要包括操作系统相关变量和一些测试过程中的自动变量
操作系统相关变量
#
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
打印操作系统变量
Log ${CURDIR}
Log ${TEMPDIR}
Log ${EXECDIR}
自动变量
标量变量
标量变量是指用${}标识的变量,标量变量最常作为字符串使用,也可以将任何值赋给它,包括List。
方法一:
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${name} zhangsan
*** Test Cases ***
打印名称
Log ${name}
方法二:
*** Settings ***
Library SeleniumLibrary
*** Test Cases ***
打印名称
${name} Set Variable 张三
Log ${name}
列表变量
@定义,需要打印输出列表中的各元素,可用Log Many关键字,如果用Log打印列表变量,只能输出整个变量值。
当使用Log打印时,标识符需要用$,不能用@。
*** Settings ***
Library SeleniumLibrary
*** Variables ***
@{my_list} Apple Banana Orange
*** Test Cases ***
打印名称
Log ${my_list} #['Apple', 'Banana', 'Orange']
Log Many @{my_list} #分别打印Apple Banana Orange
编写用例脚本时,可以通过Creatr List关键字来创建列表变量,也可以通过Set variable关键字传入多个变量来实现列表变量
的创建。
#
*** Settings ***
Library SeleniumLibrary
*** Variables ***
*** Test Cases ***
打印名称
@{my_list_1} Create List Apple Banana Orange
Log ${my_list_1} #['Apple', 'Banana', 'Orange']
Log Many @{my_list_1} #分别打印Apple Banana Orange
@{my_list_2} Set Variable a b c
Log Many @{my_list_2}
字典变量
用&{}标识
方法一:
#
*** Settings ***
Library SeleniumLibrary
*** Variables ***
&{dict} name=张三 sex=男 age=20
*** Test Cases ***
打印名称
Log Many &{dict}
Log ${dict}
方法二:
在脚本中提供create dictionary关键字创建字典变量
*** Test Cases ***
打印名称
&{dict} Create Dictionary name=张三 sex=男 age=20
#取值三种方式
${name} Get From Dictionary ${dict} name default
Log ${name}
变量文件
在RF中,还可以通过变量文件获取变量。
变量文件本质是一个python文件,在文件中定义各种变量对象,在测试套件中引用。
在 Robot Framework 中,导入变量通常是通过使用外部文件来实现的。Robot Framework 支持从多种格式的文件中导入变量,包括 YAML、JSON 和 Python 文件等。这样做的好处是,你可以将变量集中管理,并在多个测试套件或测试用例中重复使用这些变量。
下面是如何在 Robot Framework 中导入变量的几种方法:
1. 从 YAML 文件中导入变量
假设你有一个名为 variables.yaml
的 YAML 文件,内容如下:
SERVER: localhost
PORT: 8080
USER: admin
PASSWORD: secret
你可以在 Robot Framework 的测试套件文件中使用 *** Variables ***
部分和 &{IMPORT}
语法来导入这些变量:
*** Settings ***
Variables variables.yaml
*** Test Cases ***
My Test Case
Log Server is ${SERVER} and port is ${PORT}
2. 从 JSON 文件中导入变量
如果你有一个 variables.json
的 JSON 文件,可以像下面这样导入:
{
"SERVER": "localhost",
"PORT": 8080,
"USER": "admin",
"PASSWORD": "secret"
}
然后在 Robot Framework 测试套件中导入:
*** Settings ***
Variables variables.json
*** Test Cases ***
My Test Case
Log Server is ${SERVER} and port is ${PORT}
3. 从 Python 文件中导入变量
你还可以从 Python 文件中导入变量。假设你有一个 variables.py
文件:
SERVER = 'localhost'
PORT = 8080
USER = 'admin'
PASSWORD = 'secret'
在 Robot Framework 中,你可以直接在测试用例中引用这些变量,而无需特别导入,因为 Python 文件本身就是模块,可以直接被 Python 解释器加载。但是,为了清晰和方便管理,你可能会想在测试套件文件的 *** Variables ***
部分中创建一个字典,将这些变量作为键值对包含进去。
注意事项
- 变量文件的路径可以是相对路径或绝对路径。如果是相对路径,则相对于运行 Robot Framework 命令的当前工作目录。
- 变量文件中的变量名应遵循 Robot Framework 的命名规则,通常是大写字母,并用下划线分隔。
- 在测试用例中引用变量时,使用
${variable_name}
的格式。
最后,请确保你的 Robot Framework 版本支持这些特性,并且正确配置了相关的文件和路径。随着 Robot Framework 的发展,这些功能可能会有所变化或增加新的特性,因此建议查阅最新的官方文档以获取最准确的信息。
命令行定义变量
可以从命令行传入变量
关键字返回变量
关键字的返回值可以赋给某个变量,这也是关键字之间传递数据的方法。
赋值的时候,变量在前,关键字在后,变量后面可加=,如果关键字返回了列表变量,可以将值赋给几个标量变量。
用这种关键字返回获取到的变量是局部变量,只在当前作用域内有效。