Robot Framework自带的测试库——自动化测试精解(16)

发表于:2021-1-20 09:59

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

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

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号