变量与常量

一、变量与常量基础

1.1 变量

1.1.1 变量标识符

# 变量分为两类,一类是 Scalar,另一类是List。 Scalar用 $ 作为标识符,  List用 @ 作为标识符。如 ${var}, @{var}。  Scalar可以理解为单值变量,单值不仅仅代表 数值,字符串这样的,还可能包括一个的对象或者字典。

# 只有带 @ 标识的变量能够确认是 List型变量, 带 $ 标识的变则要取决于它的变量名或者变量值,才能确定是到底是什么类型的变量。 

# 变量之间是可以相互转换的,例如使用 $ 标识的变量,实际上也可以在收接收 List 值后转换成 List 变量。

1.1.2 变量的作用域

通常情况下,每个变量默认都是局部变量。变量的作用域是可以改变的,通过对一些关键词的处理,来对变量的作用域的改变

· Set Global Variable 为设定全局级变量,当执行这个设置后,这个变量在所有的测试案例和测试套件中都有效。
· Set Suite Variable 为设定 File Suite 级变量。当执行过这个设置后,这个i按量只要在当前的 File Suite 内都有效,包括下面的案例;
· Set Test Variale 为设定 Case 级变量。当执行过这个设置后,这个变量在当前的 Test Case 内有效

1.2 常量

1.2.1 环境变量

# 在RF框架中,统一用标识符 % 来标识

Starting test: 测试项目.测试套件.test case
20191226 09:06:27.067 :  INFO : C:\Windows
Ending test:   测试项目.测试套件.test case

1.2.2 数值常量

通常情况下,在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

二、Scalar变量

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

2.1.2 get赋值

主要用于返回值上,包括系统关键字的返回值和用户关键字的返回值

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

2.1.3 命令行赋值

在运行时使用 -v 的参数来给变量赋值。 赋值的地方在Run界面的 Arguments

 

 

Starting test: 测试项目.测试套件.test case
20191226 10:41:00.250 :  INFO : running
Ending test:   测试项目.测试套件.test case
    
# 变量没有经过初始化就直接赋值,则会报错

2.2 变量使用

2.2.1 在判断中使用

Starting test: 测试项目.测试套件.test case
20191226 10:52:37.946 :  INFO : ${val2} = abc
20191226 10:52:37.948 :  INFO : efgh
Ending test:   测试项目.测试套件.test case

2.2.2 字符串使用

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

2.2.3 参与运算

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 case

Starting 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变量

3.1 变量赋值

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

3.2 List元素的使用

使用 List 变量中的元素,有两种方式:
方式一: @{变量名}[index]
方式二:${变量名[index]}

2.2.1 一维List

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

3.2.2 二维List

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

3.3 变量转换

3.3.1 List变量转换为Scalar

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}

3.3.2 Scalar变量转换成List

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类型

3.3.3 转换的限制

RF中,系统会默认 ${变量名} 是 @{变量名} 的 scalar形式, 也会默认 @{变量名} 是 ${变量名} 的 list 形式。这里的限制就是变量必须没有初始化或者赋过值,这样才能转换。如果 ${变量名} 和 @{变量名} 已经被初始化了,则不能再进行赋值转换。

四、其他变量

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) 的参数来引入这个文件。

posted on 2019-12-26 14:51  软饭攻城狮  阅读(395)  评论(0编辑  收藏  举报

导航