robot frame基础知识--变量
一、变量与常量基础
1、变量标识符:(1)Scalar 用$做标识符 ${val} (2)List:用@做标识符 @{lval}
2、变量声明:RF变量一般不需要特别声明,只要有初始值即可使用,硬要有声明可以在TestSuite中手动添加变量声明。操作步骤,在TestSuite中右键点击“Add Scalar”或者‘AddList’按钮来添加如图:其实实际上也是变量赋值的一种形式
3、打印变量:log/log many分别适用于Scalar变量跟List变量
4、变量作用域:
(1)case的变量作用域在case内 (2)userkeyword的变量作用域在userkeyword内 (3)文件型suite变量作用域在该suite内,包含其下所有case
(4)目录型suite,作用域在该目录下但只在目录内,其下的文件型suite是无法使用的,所以一般不再目录suite添加变量
5、改变作用域:
(1)Set Global Variable:设定全局变量,作用于所有的测试案例跟测试套件
(2)Set Suite Variable:设定File Suite级变量,在当前file suite 内有效
(3)Set Test Variable:设定case级变量,在当前case有效
6、常量
常量有:环境变量。数值常量、特殊字符常量、系统保留常量,其中环境变量的标识符为:%,其他都为:$
运行结果:
备注:常用的特殊字符常量有:${/}、${:}、${EMPTY}、${False}、${None}、${null}、${SPACE}、${True}、
二、Scalar变量
1、Set赋值:Set Variable关键字赋值,及其Set相关带Variable的关键字也可以进行赋值
示例1:第一个变量${val2}赋值为:abcd 示例2:${valif2}判断如果${val2}的值和abcd相等,就将efgh赋值给${valif2},不相等则赋值:ace
2、Get赋值:主要用于返回值,包括系统关键字的返回值和用户关键字的返回值
示例1:获取变量${val2}的长度 示例2:获取时间
3、命令赋值:使用 “-v” 的参数给变量赋值
在run界面的Arguments输入:-v val1:running 表示val1赋值为running,那么打印结果就是running而不是前面原先定义的value
4、变量使用
(1)在判断中使用:
${valif2}判断如果${val2}的值和abcd相等,就将123456赋值给${valif2},条件不成立,则不会有任何操作
(2)字符串使用:
1、字符串拼接 : hwt${val2}test,字符串拼接不需要加“+”号
2、字符串截取:${val2[2]},${val2[0:2]},打印结果为:c,ab
3、参与运算:Evaluate
(1)数值计算
结果:
(2)字符串形式的数值
结果:
三、List变量
1、变量赋值:可用Set Variable赋值,但正式的赋值还是 Create List
结果:
2、变量的使用:
在使用上,最直观的看关键字的参数是Scalar还是List,区别就是看变量名前面是否有*号,可以通过Run Keyword关键字演示体现,如下图:
这个关键字有两个参数,name、*args。name就是支持传入Scalar变量的参数,*args就是支持可以传入List变量的。Run Keyword这个关键字的作用就是传一个name的参数,这是要执行关键字的名字,*args就是要执行关键字的参数,因为每个关键字所需要的参数个数是不定的,所以这里用了可变个数的参数。
List变量其实是不定个数的,它有几个元素,就相当于有几个Scalar变量。下面结合log 关键字:
备注:并不是说没有星号就不能用List变量,只要是变量个数和List变量里元素的个数相同,就可以用List传值。比如像Log这个关键字,它有2个Scalar型的传入参数,如果想传入List也是可以的,但是必须是一个有2个元素的List。另外,因为Log的第二个参数有默认值,所以如果传入1个元素的List也是可以的。
综上,对于有多个参数的关键字,可以按照需要传入多个Scalar变量,也可以传入List变量,但是List的元素个数必须要满足关键字需要的最少参数个数,根据自己的需要选择合适的方式。
3、List元素的使用
(1)List变量元素获取方式:1、@{变量名}[index] 2、${变量名[index]}
一维List:
结果:
(2)二维List:
结果:
注意:为啥@{listC}[1][1]的结果是: [u'dajiahao', u'xiexie'][1],而不是xiexie,因为多维List的正确写法是:@{listC[1]}[1]
四、变量的转换
1、List变量转换成Scalar变量:@{argval4} 换成 ${argval4}
2、Scalar变量转换成 List变量:
3、变量转换的限制:一个变量要转换成另一类变量,只要目标变量值没有初始化或者赋值过,就可以进行转换,如果目标变量已经初始化或者赋值过,就无法进行转换。
五、其他变量:
Dictionary变量:跟List类似,List是每个元素是一个值,而Dictionary每个元素是一对值例如:{key:value,key1:value1,key2:value2},一个key对应一个value,key不能重复
对象变量:对象变量在接口测试中的Request测试库,假设${return}是接口返回的对象,对象的状态是${return.STATUS},对象内容就是${return.CONTENT}
六、变量文件:
变量文件只支持Python的.py文件
引入变量文件方式:
1、跟添加Library、Resource变量一样添加Variable文件 2、在Suit的Import引入变量文件 3、通过-V的参数因为变量文件