3.2.3 变量
Robot Framework中的变量和Python中的变量一样,没有整型、浮点型、字符型这样的类型定义。变量不需要事先声明,但是使用前需要先赋值。变量可以在Test Suite或Resource里预先定义并赋值,也可以在Test Cases里在运行时赋值。
1.Scalar变量
Robot Framework的Scalar变量用符号“${}”表示,这是一种单一赋值变量。
在Test Suite里赋值。
*** Variables *** ${v1} 1 ${v2} abc ${v3} 1.5 *** Test?Cases *** Scalar_TestCase Log ${v1}, ${v2}, ${v3} |
输出结果如下。
1, abc, 1.5 |
在Test Cases里赋值。
*** Test Cases *** Scalar_TestCase ${var1} Set Variable Hello ${var2} Set Variable ${var1}, world! ${v1} Set Variable overwrite |
变量的值如下。
${var1} = Hello ${var2} = Hello, world! ${v1} = overwrite |
如果一个变量在Test Suite里已经有初始值,在Test Cases里用Set Variable将覆盖原有值,或可以理解为在Test Cases里创建了一个新的同名的临时变量。如上例中变量${v1}在Test Suite里的值为1,在Test Cases里的值为overwrite,最后执行Test Cases的时候,输出的值就是overwrite。但是其作用域仅为这Scalar_Test Case,其他Test Cases里变量${v1}的值仍然为1。
2.List变量
Scalar变量是某一个具体的值,而List变量相当于一系列的Scalar变量放在一起而构成的列表。List变量用符号“@{}”表示,它和Scalar变量一样,可以在Test Suite或Test Cases里赋值和使用。
在Test Suite里定义List变量的示例如下。
*** Variables *** @{list_suite} 1 2 3 4 5 *** Test Cases *** List_Suite_TestCase Log 第一个:@{list_suite}[0] Log 第三个:@{list_suite}[2] Log 倒数第一个:@{list_suite}[-1] Log 倒数第三个:@{list_suite}[-3]? |
输出结果如下。
第一个:1 第三个:3 倒数第一个:5 倒数第三个:3 |
在Test Cases里定义List变量的示例如下。
*** Test Cases *** List_Case_TestCase [Documentation] #用BuiltIn库的Set Variable创建 @{list_case} Set?Variable 1 2 3 #用Set Variable关键字赋值,@{list_case}= #[1,2,3] @{list_case2} Set Variable @{list_case} 4 5 #Set Variable里可以带List。 #@{list_case2}=[1,2,3,4,5] Log ${list_case2} #输出所有元素。 |
运行结果如下。
INFO : @{list_case} = [ 1 | 2 | 3 ] INFO : @{list_case2}?=?[ 1 | 2 | 3 | 4 | 5 ] INFO : ['1', '2', '3', '4', '5'] |
用Collections库的Create List创建,用Append To List、Insert Into List添加元素,用Remove From List、Remove Values From List删除元素。
*** Settings *** Library Collections #导入Robot Framework自带的Collections库,这个库专门用来处理List和Dictionary *** Test Cases *** List_Case_TestCase2 [Documentation] #用Collections库的Create List 创建,用Append To List、Insert Into List #添加元素,用Remove From?List、Remove?Values From List删除元素 @{list_t} Create List 0 #用Create?List关键字创建一个List变量,可以为空,也可以现在 #就赋值,@{list_t} = [ 0 ] Append To List ${list_t} 1 2 #往List里添加元素,@{list_t} = [0,1,2] Log First Log: list_t=${list_t} Insert Into List ${list_t} 0 a #@{list_t} = [a,0,1,2] Log Second Log: list_t=${list_t} Insert Into List ${list_t} -1 b #@{list_t} = [a,0,1,b,2] ${var} Remove From List ${list_t} 1 #${var}=0, @{list_t} = [a,1,b,2] Log Third Log: var=${var} list_t=${list_t} Remove Values From List ${list_t} a b 1 #@{list_t}?=?[2] Log Fourth Log: list_t=${list_t} |
运行结果如下。
INFO : @{list_t} = [ 0 ] INFO : First Log: list_t=['0', '1', '2'] INFO : Second Log: list_t=['a', '0', '1', '2'] INFO : ${var} = 0 INFO : Third Log: var=0 list_t=['a', '1', 'b', '2'] INFO : Fourth Log: list_t=['2'] |
从其他List复制。
*** Settings *** Library Collections #导入Robot Framework自带的Collections库,这个库专门用来处理List和Dictionary *** Test Cases *** List_Case_TestCase3 [Documentation] #用Collections库的Copy List,或BuiltIn库的Set Variable @{list_1} Create List 1 2 3 @{list_2} Copy List ${list_1} Log First Log: list_2=${list_2} @{list_3} Set Variable @{list_2} 4 5 Log Second Log: list_3=${list_3} @{list_4} Set Variable ${list_2} 4 5 Log Third Log: list_4=${list_4} |
运行结果如下。
INFO : @{list_1} = [ 1 | 2 | 3 ] INFO : @{list_2} = [ 1 | 2 | 3 ] INFO : First Log: list_2=['1', '2', '3'] INFO : @{list_3} = [ 1 | 2 | 3 | 4 | 5 ] INFO : Second Log: list_3=['1', '2', '3', '4', '5'] INFO : @{list_4} = [ ['1', '2', '3'] | 4 | 5 ] INFO : Third Log: list_4=[['1', '2', '3'], '4', '5'] |
要复制一个List,可以用Copy List,也可以用BuiltIn库里的关键字Set Variable。要注意的是,在Set Variable后面用@{}和${}复制出来的List是不一样的。@{}真正地复制了一个List,而${}把List当作二维数组来处理了。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。