变量——自动化测试精解(6)

发表于:2021-1-06 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:刘云    来源:51Testing软件测试网原创

  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软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号