robot frame基础知识--变量

一、变量与常量基础

1、变量标识符:(1)Scalar  用$做标识符  ${val} (2)List:用@做标识符 @{lval}

2、变量声明:RF变量一般不需要特别声明,只要有初始值即可使用,硬要有声明可以在TestSuite中手动添加变量声明。操作步骤,在TestSuite中右键点击“Add Scalar”或者‘AddList’按钮来添加如图:其实实际上也是变量赋值的一种形式

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域

3、打印变量:log/log many分别适用于Scalar变量跟List变量

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_02

 

 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、常量

常量有:环境变量。数值常量、特殊字符常量、系统保留常量,其中环境变量的标识符为:%,其他都为:$

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_03

运行结果:

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_04

备注:常用的特殊字符常量有:${/}、${:}、${EMPTY}、${False}、${None}、${null}、${SPACE}、${True}、

 二、Scalar变量

1、Set赋值:Set Variable关键字赋值,及其Set相关带Variable的关键字也可以进行赋值

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_05

示例1:第一个变量${val2}赋值为:abcd     示例2:${valif2}判断如果${val2}的值和abcd相等,就将efgh赋值给${valif2},不相等则赋值:ace

 2、Get赋值:主要用于返回值,包括系统关键字的返回值和用户关键字的返回值

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_06

示例1:获取变量${val2}的长度  示例2:获取时间

3、命令赋值:使用 “-v” 的参数给变量赋值

在run界面的Arguments输入:-v val1:running 表示val1赋值为running,那么打印结果就是running而不是前面原先定义的value

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_07

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_08

  4、变量使用

(1)在判断中使用:

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_09

${valif2}判断如果${val2}的值和abcd相等,就将123456赋值给${valif2},条件不成立,则不会有任何操作

 (2)字符串使用:

 1、字符串拼接 : hwt${val2}test,字符串拼接不需要加“+”号

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_10

2、字符串截取:${val2[2]},${val2[0:2]},打印结果为:c,ab

3、参与运算:Evaluate

(1)数值计算

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_11

       结果:

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_12

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_13

(2)字符串形式的数值

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_14

    结果:

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_15

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_16

三、List变量

1、变量赋值:可用Set Variable赋值,但正式的赋值还是 Create List

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_17

结果:

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_18

  

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_19

2、变量的使用:

   在使用上,最直观的看关键字的参数是Scalar还是List,区别就是看变量名前面是否有*号,可以通过Run Keyword关键字演示体现,如下图:

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_20

这个关键字有两个参数,name、*args。name就是支持传入Scalar变量的参数,*args就是支持可以传入List变量的。Run Keyword这个关键字的作用就是传一个name的参数,这是要执行关键字的名字,*args就是要执行关键字的参数,因为每个关键字所需要的参数个数是不定的,所以这里用了可变个数的参数。

    List变量其实是不定个数的,它有几个元素,就相当于有几个Scalar变量。下面结合log 关键字:

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_21

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_22

备注:并不是说没有星号就不能用List变量,只要是变量个数和List变量里元素的个数相同,就可以用List传值。比如像Log这个关键字,它有2个Scalar型的传入参数,如果想传入List也是可以的,但是必须是一个有2个元素的List。另外,因为Log的第二个参数有默认值,所以如果传入1个元素的List也是可以的。

    综上,对于有多个参数的关键字,可以按照需要传入多个Scalar变量,也可以传入List变量,但是List的元素个数必须要满足关键字需要的最少参数个数,根据自己的需要选择合适的方式。

 3、List元素的使用

(1)List变量元素获取方式:1、@{变量名}[index]  2、${变量名[index]}

 一维List:

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_23

结果:

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_24

(2)二维List:

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_25

结果:

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_26

注意:为啥@{listC}[1][1]的结果是: [u'dajiahao', u'xiexie'][1],而不是xiexie,因为多维List的正确写法是:@{listC[1]}[1]

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_List_27

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_28

 

四、变量的转换

1、List变量转换成Scalar变量:@{argval4} 换成 ${argval4}

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_29

Robotframework Test setup 中改变变量的值 robotframework变量定义_变量作用域_30

 2、Scalar变量转换成 List变量:

 

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_31

Robotframework Test setup 中改变变量的值 robotframework变量定义_赋值_32

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的参数因为变量文件