• 出错后退出

在默认情况下,当一个测试用例中的某个关键字返回错误时,这个测试用例就停止执行剩余的关键字。RF会继续执行下一个用例。这么做的好处是节省时间--反正这里出问题要返回来看了,再继续执行剩下的关键字也没有用了。

  • 出错后继续执行

但是,有时候,我们却需要执行用例中的所有关键字,例如:要获取更多的出错信息、更改某些全局相关的变量、做teardown或者rollback操作等。这时候,我们就可以使用BuiltIn库中的关键字来让特定关键字出错后RF仍然执行用例中剩余关键字。

第一个关键字是:Run Keyword And Continue On Failure

假设我们有个关键字叫做 Mykeyword

我们这样使用:

 Run Keyword And Continue On Failure  Mykeyword
 Log  这一句被执行

这样,不管Mykeyword这个关键字是否fail,下一个关键字Log都会被执行。

如果Mykeyword有返回值,我们可以这么使用:

 ${str}  Run Keyword And Continue On Failure  Mykeyword
 Log  ${str}  
  • 获取关键字执行结果后继续执行

有时候,我们需要获取某个关键字的执行结果,然后根据结果做不同后续操作,这个时候,我们就会用到关键字Run Keyword And Ignore Error 。假设我们要执行一个关键字Mykeyword,关键字有一个返回值。我们可以如下使用:

 ${result}  ${returnvalue}  Run Keyword And Ignore Error Mykeyword 
 Log  ${result}+${returnvalue}    

Run Keyword And Ignore Error 有2个返回值${result}获取执行结果,值为PASS或者FAIL;${returnvalue}获取Mykeyword的返回值。

  • TestSuit级别出错处理

有些场合,我们想要在整个testsuit执行结束后根据执行结果做一些特殊操作。这时候,我们就用上了下面几个个关键字:

Run Keyword If All Critical Tests Passed

Run Keyword If All Tests Passed

Run Keyword If Any Critical Tests Failed

Run Keyword If Any Tests Failed

Run Keyword If Test Failed

Run Keyword If Test Passed

Run Keyword If Timeout Occurred

这些关键字有些像Java中的Finally语句,但是略有区别,大家可以在使用的时候细细体会。另外要说的是,这些关键字只能被用到Suit Teardown部分(一般会写到一个用户自定义关键字中,被Suit Teardown调用)。他们的含义通过字面我们已经能够理解,格式也跟上边的两个关键字格式一致,就不一一展开介绍了。

  • 题外话
  1. 每个用例只做一件事情是一个好习惯。
  2. 慎用Test setup和test teardown,善用Suit setup 和 Suit teardown
  3. 用户关键字很好,但尽量不要多层嵌套,2层足矣,不然你的用例组织结构就有问题。

2013-09-03修改:关于关键字嵌套。原来上面红色部分说的并不准确。目前我们利用3层结构: 业务层(描述测试点如:登录检测),组件层(业务层描述功能点的实现实现一个功能点最小的步骤,这层尽量不出现技术关键字。如:输入正确用户名密码,输入 错误用户名。。。),实现层(技术关键字:如:inputtext id=uname uname 。。。)

关于分层,其实没很好的定论,有几个原则可以提一下:

1.促进复用。

2.把用例逻辑同具体实现做一定隔离。经过统计,系统演进的时候,功能点本身变更不大,流程细节会有一些变更,UI变更是最大的。分层可以让你少改些东西。

3.让用例更加有可读性。

如果你认为满足了以上三点,分几层无所谓,自己爽才是真的爽。跑题了。

这样利用上述错误处理机制就基本能满足你的要求了。

其实我想找一个关键字:在用例中任意位置,不管上面关键字执行情况如何都会执行,这样更方便,可惜没有,只能规避。享受表格语言接近自然语言的特性,就要忍受它不如高级语言灵活。

Robot Framework中对出错用例处理的策略的更多相关文章

  1. Robot Framework中使用HttpLibrary教程and中文支持

    Robot Framework中使用and转参数时,默认不支持中文模式,如图场景: 会出现这种错误 FAIL : UnicodeDecodeError: 'ascii' codec can't dec ...

  2. robot framework 命令行执行用例与自带的run configurations运行用例

    一.cmd中运行命令 1.执行整个项目下的所有用例: pybot 项目路径.例如: pybot F:\EC\RF_Api 2.执行某个suite中的所有用例: pybot -s 项目路径\suite文 ...

  3. Robot Framework中DatabaseLibrary应用

    DatabaseLibrary: 在RF的官网上,有DatabaseLibrary的下载链接,DatabaseLibrary有2个版本,Python和Java版.本人使用的是Python版本. 1.下 ...

  4. Robot Framework中经常用的第三方库的安装方法

    pip升级:python -m pip install --upgrade pip 一.安装robotframework-selenium2library,相当于python中的selenium    ...

  5. robot framework中的返回值

    1.若想要再setup中有返回值,给后续的操作使用 A)在setup的关键词中需要的返回值,设置为global variable或者suit variable:如下图:但是在编译器中,会报错,但是执行 ...

  6. robot framework中的timeout的关键词

    1.默认robotframework中的含有等待的关键词(如:Wait Until Element Is Enabled),未手动设置时默认该参数为5sec 2.关键词:sleep A)一般在调试的时 ...

  7. jenkins+gitlab+robot framework 中遇到的坑

    问题一:拉Git源代码时提示无权限 原来之前用的ssh密钥一直都是自己的用户生成的.其实在Jenkins系统使用的都是Jenkins这个系统帐号的. 解决方法: 切换到jenkins这个帐号下生成个新 ...

  8. Robot Framework中的未解之谜

    今天在写测试用例的时候偶然发现了一个问题: 一.看脚本逻辑上没有问题,但是在引用变量的时候不能成功引用,脚本截图如下: 这个是关键字A的截图,没有参数. 此时在case中引用${phonesign}和 ...

  9. robot framework中如何为每个测试用例,测试集准备数据或销毁数据

    Suite Setup:在这个测试集的所有测试用例开始测试之前运行(类似于junit的@BeforeClass) Suite Teardown:在这个测试集的所有测试用例结束之后运行(类似于junit ...

随机推荐

  1. Sublime Text 安装中文、英文字体

    在 Sublimte Text 如何使用默认的字体,英文好看,但是中文不好,所以我就找了一个支持中文英文的字体 YaHei Consolas Hybrid 这个字体看起来效果比较差 下载地址: 如果无 ...

  2. H3C TFTP文件传输过程

  3. 51nod 1282 时钟

    1282 时钟  题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有N个时钟,每个时钟有M个指针,P个刻度.时钟是圆形的,P个刻度均分 ...

  4. DP刷题记录(持续更新)

    DP刷题记录 (本文例题目前大多数都选自算法竞赛进阶指南) TYVJ1071 求两个序列的最长公共上升子序列 设\(f_{i,j}\)表示a中的\(1-i\)与b中色\(1-j\)匹配时所能构成的以\ ...

  5. 性能测试基础-HTTP用例设计

    JSON格式请求: web_custom_request("https://xx.xx.xx.xx:xx/pvcpappinf//msgcustomization/xinPowGenDay, ...

  6. spring的几个面试题

    Spring 是一种轻量级开发框架,旨在提高开发人员的开发效率以及系统的可维护性.Spring 官网:https://spring.io/. 我们一般说 Spring 框架指的都是 Spring Fr ...

  7. pandas数据分析小知识点(一)

    最近工作上,小爬经常需要用python做一些关于excel数据分析的事情,显然,从性能和拓展性的角度出发,使用pandas.numpy是比vba更好的选择.因为pandas能提供诸如SQL的很多查找. ...

  8. 微信小程序map地图的一些使用注意事项

    1.小程序组件map,在微信7.0.4以上(不包括7.0.4)层级问题官方已作更新,可在map上随意添加任何标签使用z-index即可:微信7.0.4版本以下map组件层级默认是最高的,只能使用官方提 ...

  9. 详解js的bind、call、apply

    详解js的bind.call.apply 说明 虽然bind.call.apply都是js很基础的一块知识,但是我从未认真总结过这三者的区别. 由于公司后端是用的微服务架构,又没有中间层对接,导致前端 ...

  10. SpringBoor与SpringCloud的关系

    SpringBoot是一个快速开发的框架,能够快速的整合第三方框架.简化XML配置,全部采用注解形式,内置Web服务器(如Tomcat等),帮助开发者能够实现快速开发,SpringBoot Web控制 ...