RF的自动化测试之行2
基础
变量是大小写敏感的
全局变量要大写,如${PATH}
$@&%加{}来定义变量,可以用字母、下划线、数字、空格
变量的优先级
1、命令行中定义的变量优先级最高。会覆盖test case里Variables中的、test data中导入的resource and variable files
单独使用–variable定义的,覆盖–variablefile定义的
单独使用–variable定义的,后边的覆盖前边的
多个variablefile里都有定义的,先引用的文件里的优先级最高
2、测试文件的Variable table定义的变量,覆盖引入的resource and variable files里的变量,在当前文件的所有test case里可用。
3、resource and variable files里的变量优先级一样,最低。。。最先引入的生效。resource file里的变量会覆盖该文件引入resource and variable files里的变量。Variable里不能使用resource and variable files里引入的变量,因为Variable table的处理在Setting table之前,resource and variable files又是在Setting table里引入的。
4、使用return values from 和 Set Test/Suite/Global Variable 关键字定义的变量会覆盖所有变量,但是也仅限于该语句所在的范围。
5、类似${TEMPDIR} 、 ${TEST_NAME}的系统变量优先级最高,不能在Variable table 或者 command line中修改。${CURDIR}会随着测试执行而自动变化。
变量的作用域
作用域的四个等级:global, test suite, test case or local scope
1、Global scope:在命令行中通过 --variable and --variablefile参数指定,或者在任意位置通过Set Global Variable关键字设置。内置变量也是全局范围可用的。建议全部用大写字母表示
2、Test suite scope:测试套件范围内可用。可以通过resource and variable files,或者使用Set Suite Variable关键字指定。高级套件里的变量不会递归到低级别的套件里,但是可以通过resource and variable files来共享变量的使用。建议全部用大写字母表示
3、Test case scope:在test case里以及调用的用户自定义关键字里可用,可以在test case里通过Set Test Variable关键字设置。建议全部用大写字母表示
4、Local scope:test case和用户自定义关键字里有其他test case和用户自定义关键字不可见的变量。本地变量可以通过return values关键字从关键字的执行中获取,用户自定义关键字也可以拿来做参数建议全部用小写字母表示
Prior to Robot Framework 2.9 variables in the local scope leaked to lower level user keywords. This was never an intended feature, and variables should be set or passed explicitly also with earlier version