变量与常量
1.1 变量
1.1.1 变量标识符
# 变量分为两类,一类是 Scalar,另一类是List。 Scalar用 $ 作为标识符, List用 @ 作为标识符。如 ${var}, @{var}。 Scalar可以理解为单值变量,单值不仅仅代表 数值,字符串这样的,还可能包括一个的对象或者字典。 # 只有带 @ 标识的变量能够确认是 List型变量, 带 $ 标识的变则要取决于它的变量名或者变量值,才能确定是到底是什么类型的变量。 # 变量之间是可以相互转换的,例如使用 $ 标识的变量,实际上也可以在收接收 List 值后转换成 List 变量。
通常情况下,每个变量默认都是局部变量。变量的作用域是可以改变的,通过对一些关键词的处理,来对变量的作用域的改变
· Set Global Variable 为设定全局级变量,当执行这个设置后,这个变量在所有的测试案例和测试套件中都有效。
· Set Suite Variable 为设定 File Suite 级变量。当执行过这个设置后,这个i按量只要在当前的 File Suite 内都有效,包括下面的案例;
· Set Test Variale 为设定 Case 级变量。当执行过这个设置后,这个变量在当前的 Test Case 内有效
1.2 常量
# 在RF框架中,统一用标识符 % 来标识Starting test: 测试项目.测试套件.test case 20191226 09:06:27.067 : INFO : C:\Windows Ending test: 测试项目.测试套件.test case
通常情况下,在RIDE里的所有字符都会被当做字符串,即使是数值,默认也是以字符串的形式存在,如果想要以数值的方式存在,就是用数值常量。如2.6,写成 ${2.6}
如图展示 数值2.6与字符2.6
Starting test: 测试项目.测试套件.test case 20191226 09:39:15.719 : INFO : ${shuzhi} = [2.6, '2.6'] 20191226 09:39:15.719 : INFO : [2.6, '2.6'] Ending test: 测试项目.测试套件.test case
2.1 变量赋值
2.1.1 Set赋值
通常最常用的方式主要是使用 Set Variable关键字对变量进行赋值,其他 Set相关的带Variable的关键字也可以进行赋值
赋值的时候,变量后面写不写 = 都可以。
Starting test: 测试项目.测试套件.test case 20191226 10:26:58.044 : INFO : ${val2} = abcd 20191226 10:26:58.045 : INFO : ${valif2} = efgh 20191226 10:26:58.046 : INFO : abcd 20191226 10:26:58.046 : INFO : efgh Ending test: 测试项目.测试套件.test case
Starting test: 测试项目.测试套件.test case 20191226 10:34:23.005 : INFO : ${val2} = abcd 20191226 10:34:23.006 : INFO : Length is 4 20191226 10:34:23.006 : INFO : ${getval2} = 4 20191226 10:34:23.007 : INFO : ${gettime} = 2019-12-26 10:34:23 20191226 10:34:23.008 : INFO : abcd 20191226 10:34:23.008 : INFO : 4 20191226 10:34:23.009 : INFO : 2019-12-26 10:34:23 Ending test: 测试项目.测试套件.test case
在运行时使用 -v 的参数来给变量赋值。 赋值的地方在Run界面的 Arguments
Starting test: 测试项目.测试套件.test case 20191226 10:41:00.250 : INFO : running Ending test: 测试项目.测试套件.test case # 变量没有经过初始化就直接赋值,则会报错
2.2 变量使用
Starting test: 测试项目.测试套件.test case 20191226 10:52:37.946 : INFO : ${val2} = abc 20191226 10:52:37.948 : INFO : efgh Ending test: 测试项目.测试套件.test case
Starting test: 测试项目.测试套件.test case 20191226 10:59:26.939 : INFO : ${val2} = abc 20191226 10:59:26.939 : INFO : 123abcefgh 20191226 10:59:26.940 : INFO : c 20191226 10:59:26.941 : INFO : 123abefgh Ending test: 测试项目.测试套件.test case
Starting test: 测试项目.测试套件.test case 20191226 11:08:49.973 : INFO : ${cal1} = 123 20191226 11:08:49.974 : INFO : ${cal2} = 124 20191226 11:08:49.975 : INFO : 124 Ending test: 测试项目.测试套件.test caseStarting test: 测试项目.测试套件.test case 20191226 11:10:08.782 : INFO : ${cal1} = '123' 20191226 11:10:08.783 : INFO : ${cal2} = 124 20191226 11:10:08.784 : INFO : 124 Ending test: 测试项目.测试套件.test case
三、List变量
Starting test: 测试项目.测试套件.test case 20191226 11:22:32.598 : INFO : @{val3} = [ a | b | c ] 20191226 11:22:32.599 : INFO : @{val4} = [ a | b | c ] 20191226 11:22:32.601 : INFO : a 20191226 11:22:32.601 : INFO : b 20191226 11:22:32.601 : INFO : c 20191226 11:22:32.602 : INFO : a 20191226 11:22:32.602 : INFO : b 20191226 11:22:32.602 : INFO : c Ending test: 测试项目.测试套件.test case
使用 List 变量中的元素,有两种方式:
方式一: @{变量名}[index]
方式二:${变量名[index]}
Starting test: 测试项目.测试套件.test case 20191226 13:42:56.476 : INFO : @{uselist} = [ a | b | c ] 20191226 13:42:56.477 : INFO : b 20191226 13:42:56.478 : INFO : b Ending test: 测试项目.测试套件.test case
Starting test: 测试项目.测试套件.test case 20191226 13:52:35.521 : INFO : @{listA} = [ a | b | c ] 20191226 13:52:35.521 : INFO : @{listB} = [ e | f ] 20191226 13:52:35.522 : INFO : @{listC} = [ ['a', 'b', 'c'] | ['e', 'f'] | 8 ] 20191226 13:52:35.523 : INFO : f 20191226 13:52:35.523 : INFO : c Ending test: 测试项目.测试套件.test case
Starting test: 测试项目.测试套件.test case 20191226 13:56:39.822 : INFO : @{listA} = [ a | b | c ] 20191226 13:56:39.822 : INFO : @{listB} = [ e | f ] 20191226 13:56:39.823 : INFO : @{listC} = [ ['a', 'b', 'c'] | ['e', 'f'] | 8 ] 20191226 13:56:39.824 : INFO : @{listD} = [ ['e', 'f'] | [['a', 'b', 'c'], ['e', 'f'], '8'] ] 20191226 13:56:39.825 : INFO : f Ending test: 测试项目.测试套件.test case
Starting test: 测试项目.测试套件.test case 20191226 14:02:42.903 : INFO : @{listA} = [ a | b | c ] 20191226 14:02:42.904 : INFO : ['a', 'b', 'c'] Ending test: 测试项目.测试套件.test case # ${listA}虽然并没有被初始化过,但是已经存在了 @{listA}, 就相当于初始化过了,这里把@{listA}转换成了${listA}
Starting test: 测试项目.测试套件.test case 20191226 14:13:36.467 : INFO : ${listA} = ['a', 'b', 'c'] 20191226 14:13:36.468 : INFO : ['a', 'b', 'c']=== 20191226 14:13:36.468 : INFO : ['a', 'b', 'c'] Ending test: 测试项目.测试套件.test case # 将create list前面的 @{listA} 换成 ${listA} 也是可以的。 # log需要的是 saclar参数,可以直接log ${listA}, 但是@{listA}是List类型,因此随机加一些字符让其转换成 scalar类型
Dictionary 变量: List中没一个元素是一个值,Dictionary的每一个元素是一对值, 如{k1:v1, k2:v2}, key不能重复
对象变量:对象变量在接口测试中的 Request测试库中用到,假如 ${return}是接口返回的对象。对于对象来说,更多使用的是对象的属性值。比如这个对象的状态就是 ${return.STATUS}, 对象的内容就是 ${return.CONTENT}。
五、变量文件
# 变量文件只支持 python中的 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 变量,其余两是 scalar 变量 # 可以在 Suit 的 import 的地方去引入这个文件。还可以在运行的地方通过 -V(大写V) 的参数来引入这个文件。