Robot Framework-变量和常量-05

Robot Framework变量与常量详解
本文围绕Robot Framework展开,介绍了变量与常量相关知识。变量包括Scalar、List等类型,阐述了其标识符、赋值方式、作用域及转换方法。常量有环境、数值等类型。还提及Dictionary、对象变量,以及变量文件的添加和使用,为RF编程提供参考。

变量&常量

变量标识符
Scalar:用 "$"作为标识符,例如${var},单值变量
List:用’@'作为标识符,例如@{var}

RF里面没有特别的变量声明,因为RF底层是python,所以语法也类似,变量不需要特定声明,只要有初始化赋值即可使用,如果硬说要有声明,可理解为在测试套件的手动添加变量理解为声明
点击SuiteTest1右键选择Add Scalar:
在这里插入图片描述
点击SuiteTest1右键选择Add List:
在这里插入图片描述
添加完成后查看效果:
在这里插入图片描述
手动添加可以看作是另一种形式的变量赋值,和用set variable是一样的
在案例case里面打印刚刚赋值的两个变量
在这里插入图片描述
填写完后勾选case2点击运行按钮,查看运行结果:
在这里插入图片描述
便量的作用域

通常每个变量默认都是局部变量:

  • 一个case里的变量,作用域在这个case内部;
  • 一个userkeyword里的变量,作用域在这个userkeyword内部;
  • 一个文件型suite里的变量,作用域在这个suite内部,所有下面的case也都可以使用;
  • 一个目录型suite里的变量,作用域在这个目录内,但也只是目录内,它下面的文件型suite是无法使用的,所以一般在目录下新增变量没有太大意义。
  • 变量的作用域是可以改变的,通过一些关键字的处理,对变量进行作用域的改变,常用的关键字有:
  • Set Global Variable为设定全局级变量。当执行过这个设置后,这个变量在所有的测试案例和测试套件里都有效;
  • Set Suite Variable 为设定File Suite级变量。当执行过这个设置后,这个变量只要在当前的File
    Suite内都有效,包括下面的案例;
  • Set Test Variable为设定Case级变量。当执行过这个设置后,这个变量在当前Test Case内有效。

常量
常量主要有环境变量、数值常量、特殊字符常量、系统保留变量
环境变量的标识符为’%’,其他的几个标识符与Scalar变量相同都是’$’,所以单值变量取决于它的变量名和变量值
(1)环境变量:统一标识符’%’,比如打印出一个环境变量path,在case2里面添加一行脚本:
在这里插入图片描述
查看运行后结果:
在这里插入图片描述
作为环境变量,在RF里面只是使用,不能复制,虽然叫变量,实际上属于常量
(2)数值常量:通常情况下,RIDE里所有的字符都会被当作字符串,即使变量是数值,也是默认字符串。如果想以数值的方式存在,可以写成${2.6}
写入脚本:
在这里插入图片描述
点击运行查看结果:
在这里插入图片描述
这里定义了一个Scalar变量,赋了两个元素,如只写2.6会直接当作字符串。用数值常量或直接写的差别不大,进行数值运算时,其实会强制转换。
(3)特殊字符常量和系统保留常量:这两类常量你平时不知道它们在哪里的,只有一个办法可以把它们找出来,那就是Content Assistance内容助手,前面介绍菜单时介绍过,它的2个快捷键,笔者个人比较喜欢“Ctrl+空格”组合键,在Windows操作系统中使用要改一下,在Mac操作系统中一般也会冲突,可以使用另一个快捷键或者改一下。先看看都有哪些常量,在Case里双击一下空白的单元格,此时有光标闪烁,说明进入了编辑状态,此时按“Ctrl+空格”组合键(如果你的这个组合键和其他组合键冲突,可以按另一个“Ctrl+Alt+空格”组合键)

特殊字符常量的主要有${/}:{:}:{EMPTY}${False}${None}${null}${SPACE}${True},其他的都是系统保留常量。
这里面每个常量的值都可以在右边的提示框里看到它的Value,可以使用键盘的上下键,切换每一个常量查看它的值,如果值为空的(除了EMPTY)都是在运行时才有它的值

Scalar 变量

(1)变量赋值:set赋值
在这里插入图片描述
查看运行后结果:
在这里插入图片描述
(2)变量赋值:get赋值
加入两行脚本:
在这里插入图片描述
第三步是获取变量${val2}的长度,第四步是获取时间
查看运行后结果:
在这里插入图片描述
(3)变量赋值:命令行赋值
运行时使用’-v’的参数来给变量赋值,加上一行脚本:
在这里插入图片描述
如果直接运行的话,就是最初定义的变量scavalue,现在在run的界面上Arguments上加一行:
在这里插入图片描述
点击运行查看结果:
在这里插入图片描述
如果一个变量没有经过初始化或者赋值,使用的时候会报错

在判断中使用变量
在这里插入图片描述
如果${val2}的值和abcd相等就运行后面的log关键字,打印efgh
点击run,查看运行结果:
在这里插入图片描述
如果条件不成立,则不会打印efgh
在字符串中使用变量
如下图测试案例7、8、9所示:
在这里插入图片描述
查看运行后结果:
在这里插入图片描述
变量运算

关键字Evaluate,将后面的表达式放到python里面进行运算
这里给变量赋值为123,用Evaluate进行加1运算;或者变量值为字符串形式’123‘,可强制转换成int后进行计算
在这里插入图片描述
运行后结果:
在这里插入图片描述

List变量

变量赋值
和Scalar类似,List变量也可以用Set Variable来赋值,但是它最正式的赋值还是用Create List。可以看一下 Set Variable的关键字说明,这里提到Set Variable这个关键字,主要用于设置Scalar变量。同时它也能用来把一个List变量或者多个Scalar变量形成的List转换给一个Scalar变量,通常推荐使用Create List来创建新List
在这里插入图片描述
查看运行后结果
在这里插入图片描述
变量使用

在使用上,最直观的是看关键字的参数到底是Scalar的还是List的,区别就是看变量名前面是否有“*”(星号),刚才使用过一个关键字叫Run Keyword lf,这次用另一个关键字Run Keyword来进行演示。
Run Keyword:这个关键字有两个参数,name、*args。name就是支持传入Scalar变量的参数;*args就是支持可以传入List变量的。这个关键字的作用就是传一个name的参数,这是要执行关键字的名字,*args就是要执行关键字的参数,因为每个关键字所需要的参数个数是不定的,所以这里用了可变个数的参数。
List变量其实是不定个数的,它有几个元素,就相当于有几个Scalar变量,所以对于*args,读者可以按照关键字需要的参数数量一个一个地写,也可以传一个List变量。

Log:它需要2个参数,一个是打印的日志message;另一个是日志的级别level。level本身有个默认值,如果不需要改变的话可以不传值。
添加脚本:
在这里插入图片描述
3:abcd和WARN都是log的参数,放到Run Keyword里面就是*args
4:用list变量来存放abcd和WARN两个参数
5:赋值keyword为log
6:打印日志WARN的abcd日志
7:同6

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

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

List元素的使用

获取list里面的元素有两种方式,正常方式是"@{变量名}[index]",另一种是"${变量名[index]}"

如果是多维list,那就看需要取哪一维,取单个元素的话是几维就需要几个"[]"
(1)一维List
在这里插入图片描述
运行结果:
在这里插入图片描述
(2)二维List
在这里插入图片描述
在给@{listC}赋值时,后面的listA和listB要用"$"符号,这样才是二维的,如果用@符合最后还是一维的
第14行这种写法有问题,只有前面的[1]生效了,然后和后面的[2]组成了一个字符串连接,正确的写法是第15行

查看运行后结果:
在这里插入图片描述
用方括号来表明需要的元素,如果是多维List,要想清楚到底要哪层的,不要写多或者写少

变量转换

List变量转换Scalar
这种转换的效果是把整个List变成一个Scalar,对于那些只接收Scalar 变量参数的关键字,而又想传List的全部值时,或者其他你需要的把List当作Scalar的情况下使用。在前面说过Log的例子,它需要2个Scalar变量的参数,也可以用一个2个元素的List来传值给Log,但是那是因为2个元素分别对应Log的2个参数。如果想要用Log打印出来List的2个元素,那就可以直接把@{val1}换成${val1},虽然${val1}没有初始化,但是因为有了@{val1},那么默认${val1}也就相当于初始化过了,值与@{val1}相同。
在这里插入图片描述
查看运行后结果:
在这里插入图片描述

Scalar变量转换List
可直接将之前的脚本替换,create list前面的@{val1}替换成${val1}
在这里插入图片描述
查看运行后结果:
在这里插入图片描述
转换的限制

变量要进行赋值或初始化之后才能使用,如果没有进行过赋值,RIDE里面会显示紫色

如果一个变量要转换成另一类变量,只要目标变量没有初始化或者赋值过,就可以进行转换。如果目标变量已经初始化或者赋值过了,那就无法进行转换了。所以大家以后在定变量名字时注意这一点,不要让这样的限制影响到你的案例设计。

其他变量

Dictionary 变量:Dictionary其实和List有点类似,List的每个元素是一个值,Dictionary的每个元素是一对值,比如{key1:val1,key2:val2},这就是一个Dictionary,它的元素都是成对的,一个key对应一个Value,key是不能重复的。

对象变量:对象变量将在接口测试中的Request 测试库里接触到,假设${return}是接口返回的对象。对于对象来说,更多使用的是对象的属性值。比如这个对象的状态就是${return.STATUS},对象的内容就是${return.CONTENT}

变量文件

前面介绍过怎么添加Library,怎么添加Resource,其实在那里还有一个Variable变量文件可以添加,变量文件只支持Python的py文件,这里有一个官方的例子,可以新建一个var.py文件,里面输入如下内容:

import random
 __all__=['scalar','LIST_var','integer']
scalar='Hello world!'
LIST_var=['Hello','list','world']
integer=random.randint(1,10)

有几点要注意的,一个是“__all__”,这是用来列出这里都有哪几个变量的;另一个是“LIST__var”,它真正的变量名是var,只是用“LIST__”来标明它是一个List变量,其他2个都是Scalar变量。
可以在Suite的Import的地方去引入这个文件。还有一个方法是在运行时,通过“-V”
的参数来引入这个文件,这里是大写的V,要注意和之前小写的v是不一样的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值