第五章 Robot Framework自带的测试库
Robot Framework安装完成后,默认提供了一些标准测试库。其中包括通用的BuiltIn库,处理List和Dictionary变量的Collections库,处理日期和时间的DateTime库,与本机操作系统交互的OperatingSystem库,处理字符串的String库,处理XML文件的XML库等。完整的列表可以参见Robot Framework网站。
只有BuiltIn库不用显式使用Library导入,其他库需要使用Library导入才可以使用。本书并不打算一一介绍这些标准测试库的每一个关键字,而只列举几个常用且比较容易混用的关键字。在开始使用相关的库编写测试用例前,建议了解一下所有的关键字,做到心中有数。不用看具体的用法,关键字都以自然语言方式命名,易于理解。看名字基本上就可以了解标准测试库提供了哪些功能,这样实现的时候就知道哪些关键字可以使用,真正需要用的时候,可以查看帮助文档,了解具体使用方法和示例。
5.1 BuiltIn库
5.1.1 Log和Log Many
Log和Log Many都是用于输出运行日志的关键字。Log输出具体的信息或Scalar变量,而Log Many一次将多个List或Dictionary变量的值逐行输出。
${var} Set Variable Hello World Log ${var} @{a_list} Create List a b &{a_dict} Create Dictionary a=1 b=2 Log ${a_list} #输出为['a', 'b']? Log Many @{a_list} Log ${a_dict} #输出为{'a': '1', 'b': '2'} Log Many &{a_dict} |
输出结果如下。
INFO : ${var} = Hello World INFO : Hello World INFO : @{a_list} = [ a | b ] INFO : &{a_dict} = { a=1 | b=2 } INFO : ['a', 'b'] INFO : a INFO : b INFO : {'a': '1', 'b': '2'} INFO : a=1 INFO : b=2 |
关键字Log不能用于直接输出List或Dictionary变量,需要将它们转换为Scalar变量才能输出。而Log Many可以直接将List或Dictionary变量按它们特有的格式输出。
5.1.2 Should Match和Should Match Regexp
以Should开头的关键字都用于判定两个给定的参数是否匹配。Should Match支持“*”“?”或给定字符集的匹配,而Should Match Regexp则用正则表达式匹配。正则表达式匹配相对来说更加精确一些,例如,下面几个判定表达式。
Should Match ABCD A*D #用*匹配任意个字符串 Should Match Abc Ab #用?匹配一个字符 Should Match Regexp ABCD ^[A-Z]{4}$ #有且仅有4个大写字母 Should Match Regexp String123 \\w+\\d{3} #以字符开头的字符串加3个数字 |
5.1.3 Run Keyword
以Run Keyword开头的关键字有很多,它们都用来执行某个关键字。Run Keyword If可用于实现分支结构的测试用例设计。Run Keyword And Ignore Error表示即使执行某个关键字失败,也继续执行,看起来貌似没什么用处,其实很多时候挺好用。例如,下例中先执行My Keyword,然后根据它的返回值执行不同的步骤。
{status} ${value} Run Keyword And Ignore Error My Keyword #执行My Keyword,不管 #它返回成功还是失败,都继续下一步 Run Keyword If '${status}' == 'PASS' Do Action For Success #如果成功,执行某些动作 Run Keyword Unless '${status}' == 'PASS' Do Action For Fail #如果失败,执行其他一些动作 |
5.1.4 Sleep和Wait Until Keyword Succeeds
有时候,如果需要等一段时间才能继续执行下一步,我们的第一反应可能就是用Sleep让测试用例休息一会儿,但是Sleep必须指定一个固定的休息间隔,不到时间不会执行下一步。有时候执行测试用例的过程中需要等待的时间不是固定的。受硬件资源、网络、软件的处理时间等的影响,有时需等待几秒,有时需等待几分钟甚至几十分钟。Wait Until Keyword Succeeds是一个比Sleep更“优雅”的关键字,应该尽量避免使用Sleep让每次都等待固定的时间。
Wait Until Keyword Succeeds 10 min 5 sec My keyword arg |
上例表示每隔5s执行一次My Keyword,直到成功或超过最长时间10min才退出。如果在10min内执行成功,则表示不用继续执行下一步。如果超时,则将测试用例标记成fail并退出。
5.1.5 Should Be Equal
判断两个参数相等的关键字如下:
·Should Be Equal;
·Should Be Equal As Integers;
·Should Be Equal As Numbers;
·Should Be Equal As Strings。
尽量使用Should Be Equal As ×××来对两个参数进行比较。在比较两个参数之前,会先自动转换为相应的数据类型,再进行比较。示例如下。
Should Be Equal As Numbers 1.123 1.1 precision=1 #pass Should Be Equal As Numbers 1.123 1.125 precision=2 #fail Should Be Equal As Numbers 112 113 precision=-1 #pass |
两个数字在比较之前都会按指定的精度进行转换,之后再进行比较,所以根据precision(即1),1.123和1.1都转换为1.1。
转换数字的过程中会采用四舍五入的方式,所以根据precision(即2),1.123转换为1.12,1.125转换为1.13。
精度还可以是负数,表示向左四舍五入取整,如112和113都将转换为110。
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。