前言介绍
安装好robotframework库后,跟之前文章介绍的BuiltIn库一样BuiltIn库使用介绍,在“python安装目录\Lib\site-packages\robot\libraries”中有一个常用库Collections.py,主要用于操作列表和字典。
打开客户端ride后,BuiltIn模块是默认导入,可直接使用,而其他模块或者第三方模块/包都需要import才能被使用。
我们可以在测试套件和resource文件中导入这些模块或者包,两者导入的方式是一样的。区别是在Suite中导入,该Suite内的测试用例可以直接使用导入的关键字;如果是在resource文件中导入,那么Suite需要再导入resource文件才能使用这些关键字。
该文章主要介绍在Suite中导入Collections模块的列表相关关键字的使用
在测试套件Suite中导入Collections
选中Suite(创建时选择Type为File类型;如果是Directory类型,导入库后用例不能使用导入的关键字),在右侧编辑区域可以看到有个按钮“Library”
点击“Library”按钮,在弹出的对话框中填入Collecitons(ride可以自动找到该库的目录),点击OK。
导入成功后选择“Tools->Search Keywords”,可以看到source为Collections的各类关键字。
2、列表类关键字介绍
关键字 | 描述 |
Append To List | 在列表尾部添加元素,代码如list.append() |
Combine Lists | 合并多个列表并返回一个新列表 |
Convert To List | 将可迭代对象转换为列表,代码如list(item) |
Copy List | 复制列表,如果参数deepcopy 为True,使用深拷贝模式copy.deepcopy(list),新列表的修改不会影响到传入的列表 |
Count Values In List | 返回列表中某个值出现的次数,默认是遍历全列表,也可以带上start和end参数指定需要遍历的index的范围。 |
Get From List | 返回某个index位置的值 |
Get Index From List | 返回列表中某个值的index,默认是遍历全列表,也可以带上start和end参数指定需要遍历的index的范围。 |
Get Match Count | 返回跟传入参数相匹配的元素的个数,传入的参数为带*的字符串(示例中的a.*)或者以regexp=开头的正则表达式(示例中的regexp=a.*) |
Get Matches | 返回跟传入参数相匹配的元素,传入的参数为带*的字符串(示例中的a.*)或者以regexp=开头的正则表达式(示例中的regexp=a.*) |
Get Slice From List | 返回index位于start和end位置的切片数据 |
Insert Into List | 往列表中某个位置插入元素 |
List Should Contain Sub List | 检查列表1是否包含列表2的所有元素,也就是列表2是不是列表1的子列表 |
List Should Contain Value | 检查元素是否在列表中 |
List Should Not Contain Duplicates | 检查列表是否不包含重复元素 |
List Should Not Contain Value | 检查元素是否不在列表中 |
Lists Should Be Equal | 检查两个列表是否相等 |
Log List | 打印列表 |
Remove Duplicates | 从列表中移除重复元素,并返回移除后的列表 |
Remove From List | 从列表中移除某个index的元素并返回该元素 |
Remove Values From List | 从列表中移除传入的多个元素 |
Reverse List | 反转列表(从后往前排序) |
Set List Value | 设置列表的index位置的元素值,例如list[0]=11 |
Should Contain Match | 判断列表是否与传入参数相匹配,传入的参数为带*的字符串(示例中的a.*)或者以regexp=开头的正则表达式(示例中的regexp=a.*) |
Should Not Contain Match | 判断列表是否与传入参数不匹配,传入的参数为带*的字符串(示例中的a.*)或者以regexp=开头的正则表达式(示例中的regexp=a.*) |
Sort List | 将列表排序 |
上面的几个关键字,我们举例介绍:
1、Should Contain Match
在Text Edit页签中内容如下:
*** Settings ***
Suite Setup log 测试套件开始执行
Suite Teardown log 测试套件结束执行
Test Setup log 测试用例开始执行
Test Teardown log 测试用例结束执行
Force Tags Suite
Library Collections
*** Test Cases ***
Case1
[Tags] Test1
${List1} create list apple banana peat
Should Contain Match ${List1} a*
Should Contain Match ${List1} c*
用例执行后,点击report看下报告如下:用例中第二个断言会失败。
2、Get Match Count 和 Remove Duplicates
在Text Edit页签中内容如下:
*** Settings ***
Suite Setup log 测试套件开始执行
Suite Teardown log 测试套件结束执行
Test Setup log 测试用例开始执行
Test Teardown log 测试用例结束执行
Force Tags Suite
Library Collections
*** Test Cases ***
Case1
[Tags] Test1
${List1} create list apple banana peat banana
#获取匹配元素的个数
${count} Get Match Count ${List1} b*
log ${count}
#移除重复元素
${List2} Remove Duplicates ${List1}
Log List ${List2}
用例执行后,点击report看下报告如下,打印出我们期望得到的值。
总结
没有举例的关键字,请大家在线下多操作和练习,这样会更清楚这些列表相关的关键字的作用和实现,当然也就可以直接看python的代码实现。
共勉: 东汉·班固《汉书·枚乘传》:“泰山之管穿石,单极之绠断干。水非石之钻,索非木之锯,渐靡使之然也。”
-----指水滴不断地滴,可以滴穿石头;
-----比喻坚持不懈,集细微的力量也能成就难能的