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