Collections库——自动化测试精解(17)

发表于:2021-1-21 09:32

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

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

  5.2 Collections库
  Collections库专门用来处理List和Dictionary变量,如获取、添加、修改、删除等操作,但它不包含创建变量的操作。创建变量和判断参数匹配性的基础关键字在BuiltIn库里可找到。表5-1所示的关键字都是BuiltIn库里和List或Dictionary变量相关的关键字。
  
  5.2.1 Should Contain
  BuiltIn库里的Should Contain不是专门用于处理List或Dictionary变量的,它可以处理任何类型的数据。例如:
  Should Contain    A test String    test    #pass
  @{a_list}    Create List    a    b
  Should Contain    ${a_list}    a    #pass
  &{a_dict}    Create Dictionary    key1=1    key2=2
  Should Contain    ${a_dict}    key1=1    #pass
  Collections库里也提供类似××× Should Contain ×××的关键字,和BuiltIn库里的关键字相比要更专业。例如:
  @{a_list}    Create List    a    b
  List Should Contain Value    ${a_list}    a        #List中包含元素a
  List Should Not Contain Value    ${a_list}    c    #List中不包含元素c
  &{a_dict}    Create Dictionary    key1=1    key2=2
  &{sub_dict}    Create Dictionary    key1=1
  Dictionary Should Contain Key    ${a_dict}    key1    #Dictionary中包含key:key1
  Dictionary Should Contain Value    ${a_dict}    1     #Dictionary中包含value:1
  Dictionary Should Contain Sub Dictionary    ${a_dict}    ${sub_dict}  #Dictionary中包含子
  #Dictionary
  对于Dictionary变量来说,Collections库里的Should Contain可以只查找key或value,通常这是更普遍的使用方式。
  5.2.2 Get Count
  BuiltIn库里提供的Get Count关键字用于取得某个元素出现的次数,它既可以处理List变量,也可以处理字符串。在Collections库中提供了一个专门处理List变量的关键字Get Match Count。
  ${a_string}    Set Variable    a b aaa A
  @{a_list}    Create List    a    b    aaa    A
  ${count}    Get Count    ${a_string}    a    #字符串匹配,结果为4,找到4个a
  ${count}    Get Count    ${a_list}    a    #List匹配,结果为1
  ${count}    Get Match Count    ${a_list}    a    #结果为1
  ${count}    Get Match Count    ${a_list}    a*    #结果为2,匹配到a和aaa
  ${count}    Get Match Count    ${a_list}    a*    case_insensitive=True    #忽略大小写,结果
  #为3,匹配到a、aaa和A
  ${count}    Get Match Count    ${a_list}    regexp=a.*    #正则表达式匹配, 结果为2
  从上例中可以看出,BuiltIn库的关键字Get Count只能用于简单的全字匹配,而Collections库的关键字Get Match Count可以用通配符和正则表达式匹配。有了正则表达式的支持,将使匹配变得非常灵活、方便。
  5.2.3 删除Dictionary变量的元素
  为了从一个Dictionary变量里删除元素,Collections库提供了3个关键字。
  ·Pop From Dictionary:移除指定key的元素,并返回对应的value。
  ·Remove From Dictionary:移除指定key的元素,没有返回值。
  ·Keep In Dictionary:除了指定key的元素之外,移除其他所有元素。
  &{a_dict}    Create Dictionary    a=1    b=2    c=3
  ${ret}    Pop From Dictionary    ${a_dict}    b    #移除b=2,${ret}的值为2
  Log Dictionary    ${a_dict}
  Remove From Dictionary    ${a_dict}    a    #移除key为a的元素。
  Log Dictionary    ${a_dict}    #现在只剩下c=3。
  Set To Dictionary    ${a_dict}    d    4    e    5    #再追加两个元素
  Log Dictionary    ${a_dict}
  Keep In Dictionary    ${a_dict}    e    #除了e之外,移除其他元素
  Log Dictionary    ${a_dict}    #现在只剩下e=5
  输出结果如下。
  INFO : &{a_dict} = { a=1 | b=2 | c=3 }
  INFO : ${ret} = 2
  INFO : 
  Dictionary size is 2 and it contains following items:
  a: 1
  c: 3
  INFO : Removed item with key 'a' and value '1'.
  INFO : 
  Dictionary has one item:
  c: 3
  INFO : 
  Dictionary size is 3 and it contains following items:
  c: 3
  d: 4
  e: 5
  INFO : Removed item with key 'c' and value '3'.
  INFO : Removed item with key 'd' and value '4'.
  INFO : 
  Dictionary has one item:
  e: 5
  Keep In Dictionary是一个非常有意思的关键字。有时候我们需要清空一个Dictionary变量,例如,在一个FOR循环中使用这个Dictionary变量临时保存值,每次进入循环,都需要清空这个Dictionary变量,重新赋值。这个时候可以使用Keep In Dictionary关键字,然后输入一个不存在的key作为参数来达到目的。例如:
  Keep In Dictionary    ${a_dict}    not_exist_key
  Collections库的更多关键字请参阅Robot Framework官方文档。对于3.1.1版本,Collections库中可用的关键字如图5-1所示。
图5-1  对于3.1.1版本,Collections库中可用的关键字

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号