6.内置变量
有些特殊的变量不用赋值,它本身就有某个或某些特定的值,这些变量叫作Robot Framework内置变量。
1)内置变量
2)自动变量
自动变量指的是一些随着Robot Framework测试用例执行过程自动赋值的变量。有些变量在执行过程中随时在变,有些变量不是整个执行周期里都可用,有些变量只有特定的条件下才有值。表3-3列出了这些自动变量。
7.特殊变量
1)数字
Robot Framework默认的测试数据全是字符型的,即使输入的是一个数字,也将它当成一个字符串来处理。如果要明确表明输入的是数字,就要将数字用“${}”标注,如${123}、${3.14}。
这种表示方法支持科学记数法,如${-1e-4}指的是?0.0001。
此外,还可以用二进制、八进制或十六进制数来表示数字,只需在相应的数字前加0b、0o或0x即可,这里b、o、x是不区分大小写的,所以用0B、0O、0X也是可以的。例如:
${0b1011}=${11} ${0o10}=${8} ${0xff}=${255} ${0B1010}=${0XA} |
Robot Framework用${true}和${false}表示布尔型的数据。数据不区分大小写,所以${true}和${True}是一样的。
2)空格和空
有些时候,如果需要在测试数据中传递空格或空的参数,如某个关键字需要接受3个参数,但第二个参数可以没有值,或需要将某个变量清空,就可以给一个空格或空。Robot Framework用${SPACE}表示空格,用${EMPTY}表示空。如果需要表示多个空格,还可以在SPACE后面直接乘以个数。例如,${SPACE*5} 表示5个空格,用传统的转义法表示为“\ \ \ \ \ \”。
关于空变量的示例如下。
*** Test Cases *** Test_empty_TestCase ${ret} myKeyword a ${EMPTY} c Log ret=${ret} ${ret} Set Variable ${EMPTY} Log ret=${ret} *** Keywords *** myKeyword [Arguments] ${arg1} ${arg2} ${arg3} Log ${arg1} | ${arg2} | ${arg3} ${ret} Set Variable ${arg1} [Return] ${ret} |
输出的日志如下。
INFO : a | | c INFO : ret=a INFO : ret= |
在Java里一般用NULL表示空,在Python里则用NONE表示空。Robot Framework用${null}和${none}表示Java与Python中返回为空的情况。例如,有一个用Python写的关键字“GetValue”(属于用户扩展库函数),要判断它返回的值是不是NONE,可以在Robot Framework里使用如下语句。
${ret} GetValue arg Should Be Equal ${ret} ${none} |
3)日期和时间
Robot Framework有自己的时间格式。可以只用一个简单的数字表示时间,单位默认为秒。这里的数字可以是真实的数字,也可以是字符串形式的数字,如${10}s和10s是一致的。
如果时间比较长,用秒来表示就不那么易读。这个时候可以用特殊的时间格式的字符串来表示。Robot Framework支持的时间字符串如下。
·days, day, d;
·hours, hour, h;
·minutes, minute, mins, min, m;
·seconds, second, secs, sec, s;
·milliseconds, millisecond, millis, ms。
数字可以包含小数点,甚至可以是负数。时间字符串不区分大小写。可以忽略时间中的所有空格。
下面给出一些例子。
1 min 30 secs = 1m 30sec = 1m30s 2 days 3 hours=2d3h -30min |
4)变量内的变量
Robot Framework的变量名甚至可以动态生成,例如,${${name}_Home}表示动态生成的变量内的变量,其中${name}也是一个可变的变量。
关于变量内的变量的示例如下。
Variable_in_Variable_TestCase ${John Home } Set Variable /home/john ${Alice?Home } Set Variable /home/alice ${name} Set?Variable John Log ${${name}?Home} |
输出的日志如下。
INFO : /home/john |
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。