4. 内置变量
Robot Framework提供了一些不用创建就可以使用的内置变量。主要有环境变量相关变量、操作系统相关变量、数字变量、Boolean和None/Null变量、空格和空变量、其他内置变量。
4.1. 环境变量
Robot Framework允许在测试数据中使用环境变量,仅限于字符串值,语法表示为%{ENV_VAR_NAME}
。
在操作系统中设置的环境变量在测试执行的时候是可用的,并且可以使用OperatingSystem
库中的关键字Set Environment Variable
创建新的环境变量或使用关键字Remove Environment Variable
删除现有变量。
环境变量是全局变量,在一个测试用例中设置的环境变量,可以用在其后执行的其他测试用例中,测试执行后,对环境变量的更改无效。
认识一下操作系统环境变量:
右键点击“我的电脑”–>“属性”–>“高级系统设置”–>“环境变量”:
示例1:打印已有环境变量中的“OneDrive”、“JAVA_HOME”、“ComSpec”
代码;
*** Test Cases ***
Env_Variables
Log %{OneDrive}
Log %{ComSpec}
Log %{JAVA_HOME}
RIDE中显示:
运行结果:结果显示可以获取系统变量值。
示例2:使用OperatingSystem
库中的Set Environment Variable
和Remove Environment Variable
关键字创建和删除环境变量
先在测试套件中引入OperatingSystem
库。
点击测试套件,点击“Library”,在弹出的对话框中输入“OperatingSystem”,点击OK:
代码情况:
*** Settings ***
Library OperatingSystem
*** Test Cases ***
Env_Variables2
Set Environment Variable env_name_var 增加环境变量 #创建新的环境变量
Log %{env_name_var}
Remove Environment Variable env_name_var #移除已有的环境变量
Remove Environment Variable JAVA_HOME #移除现有的环境变量
Log %{JAVA_HOME}
Log %{env_name_var}
RIDE中显示:
运行结果:
运行结果显示创建和删除变量都成功。
4.2. 操作系统相关变量
Robot Framework内置一些与操作系统相关的变量,使测试数据与操作系统无关。
可用的操作系统相关的内置变量如下所列:
${CURDIR}
:测试数据文件所在目录的绝对路径,该参数是大小写敏感的${TEMPDIR}
:操作系统临时目录的绝对路径,在类 Unix 系统中,该路径通常是 /tmp;在 Windows 系统中,通常是 c:\Documents and Settings\\Local Settings\Temp${EXECDIR}
:到测试开始执行的目录的绝对路径${/}
:操作系统文件路径分隔符,在类 Unix 系统中为: ‘/’, 在 Windows 中则为: ‘\’${:}
:操作系统路径元素分隔符,在类 Unix 系统中为: ‘:’,在 Windows 中则为: ‘;’${\n}
:操作系统行分隔符,在类 Unix 系统中为: ‘\n’,在 Windows 中则为: ‘\r\n’
示例:
1)打印出测试文件所在绝对路径
2)打印操作系统临时文件的绝对路径
3)打印开始测试执行的目录绝对路径
4)应用“/”在测试文件所在绝对路径创建txt文件
5)应用“${\n}”验证换行操作
代码:
System_Variables
Log ${CURDIR} #测试文件所在绝对路径
Log ${TEMPDIR} #操作系统临时文件的绝对路径
Log ${EXECDIR} #开始测试执行的目录绝对路径
Create File ${CURDIR}${/}input.txt 在测试文件所在目录下创建文件
Log Some text here${\n}on two lines. #换行表示
RIED中表示:
运行结果:
成功创建文件
4.3. 数字变量
通常情况下,Robot Framework中所有的字符都会被当做字符串。如果想让它直接以数值方式存在,就可以使用数字变量了。
数字变量可以用于创建整数和浮点数,当关键字期望获取实际数值,而不是看起来像数值得字符串时,就非常有用了。
示例:
1) 创建科学计数的浮点数-0.0001
2) 创建包含数值变量的List变量
3) 打印11的二进制数字变量
4) 打印8的八进制数字变量
5) 打印255十六进制数字变量
6) 打印10的二进制和十六进制数字变量
代码;
Number_Variable
${Num_xx} Set Variable ${-1e-4} #创建科学计数的浮点数-0.0001
@{Number_Var} Create List ${3.33} ${6.66} #创建包含数字变量的List变量
Log ${0b1011} #二进制11
Log ${0o10} #八进制8
Log ${0xff} #十六进制255
Log Many ${0B1010} ${0XA} #10的二进制十六进制表示
RIDE表示:
运行结果:
4.4. Boolean和None/Null变量
表示布尔值的语法:${true}
、${false}
表示Python的none值:${none}
表示Java的null值:${null}
这些变量不区分大小写,例如${true}
和${TRUE}
是等效的。${None}
和${null}
是同义词,因为在Jython解释器上运行测试时,Jython会在必要的时候自动转换None和Null使用的正确格式。
4.5. 空格(SPACE)变量和空(EMPTY)变量
可以分别使用 ${SPACE}
和 ${EMPTY}
来创建空格和空字符串变量。这些变量很有用,如果不使用这些变量的话,就需要对空格或空单元格进行转义。如果需要一个以上的空格,也可以使用扩展变量语法来轻易获得,形如:${SPACE * 5}
。下面的例子中,Should Be Equal
关键字得到的参数值是相等的,但很明显使用变量的方式比使用 ‘\’ 转义的方式更易理解。
还有空List变量(@{EMPTY}
)和空Dictionary变量(&{EMPTY}
)。因为他们没有有意义的内容,如果它们在测试数据中的某个地方使用,基本上都会消失。只有当使用不带参数的template关键字或覆盖不同作用域范围的列表或字典时才有用,在测试模板中的应用很有用。
示例:
1) 一个空格的2种表示
2) 4个空格的2种表示
3) 10个空格的2种表示
4) 引用空格的2种表示
5) 引用空格的另外表示
6) 空的2种表示
代码:
*** Test Cases ***
Space_Variable
Should Be Equal ${SPACE} \ \ #一个空格
Should Be Equal ${SPACE*4} \ \ \ \ \ #4个空格
Should Be Equal ${SPACE*10} \ \ \ \ \ \ \ \ \ \ \ #10个空格
Should Be Equal "${SPACE}" " " #引用的空格
Should Be Equal "${SPACE}" "\ " #引用的空格
Should Be Equal ${EMPTY} \ #空单元
RIDE表示:
运行结果:成功
4.6. 其他一些自动变量
Robot Framework还有一些可根据实际环境变化的自动变量,这些变量在测试执行期间可以具有不同的值,其中一些变量甚至不是一直可用的。
可用的自动变量如下所列:
变量名称 | 说明 | 使用场景 |
---|---|---|
${TEST NAME} | 当前测试用例的名称 | 测试用例 |
@{TEST TAGS} | 当前测试用例被打上的所有标记,按字母顺序排列。可以使用 Set Tags 和 Remove Tags 关键字动态的修改 | 测试用例 |
${TEST DOCUMENTATION} | 当前测试用例的说明文档,可以使用 Set Test Documentation 关键字动态的修改 | 测试用例 |
${TEST STATUS} | 当前测试用例的执行状态,PASS 或 FAIL | 测试用例 teardown时 |
${TEST MESSAGE} | 当前测试用例的信息 | 测试用例 teardown时 |
${PREV TEST NAME} | 前一个测试用例的名字,如果还没有测试用例被执行,则该值为空 | 所有地方 |
${PREV TEST STATUS} | 前一个测试用例的执行状态,PASS/FAIL,如果还没有测试用例被执行,则该值为空 | 所有地方 |
${PREV TEST MESSAGE} | 前一个测试用例执行所产生的可能的错误信息 | 所有地方 |
${SUITE NAME} | 当前测试套件的全称 | 所有地方 |
${SUITE SOURCE} | 当前测试套件文件或目录的绝对路径 | 所有地方 |
${SUITE DOCUMENTATION} | 当前测试套件的说明文档,可以使用 Set Suite Documentation 关键字动态的改变 | 所有地方 |
&{SUITE METADATA} | 当前测试套件的元数据 | 所有地方 |
${SUITE STATUS} | 当前测试套件的执行状态, PASS 或 FAIL | 测试套件 teardown |
${SUITE MESSAGE} | 当前测试套件的全部信息,包括统计 | 测试套件 teardown |
${KEYWORD STATUS} | 当前关键的执行状态,PASS 或 FAIL | 用户关键字 teardown |
${KEYWORD MESSAGE} | 当前关键字执行时可能产生的错误信息 | 用户关键字 teardown |
${LOG LEVEL} | 当前日志级别 | 所有地方 |
${OUTPUT FILE} | 到输出文件的绝对路径 | 所有地方 |
${LOG FILE} | 到日志文件的绝对路径,或者为NONE 当没有创建日志文件时 | 所有地方 |
${REPORT FILE} | 到测试报告文件的绝对路径,或者为NONE 当没有创建测试报告文件时 | 所有地方 |
${DEBUG FILE} | 到debug文件的绝对路径,或者为NONE 当没有创建debug文件时 | 所有地方 |
${OUTPUT DIR} | 到输出目录的绝对路径 | 所有地方 |