浅析RobotFramework工具的使用 | 京东物流技术团队

京东云开发者
• 阅读 324

1 简介

最近几年越来越多的公司都开始进行自动化测试的设计和布局了,自动化,顾名思义就是把以人为驱动的测试行为转化为机器执行的一种过程,并经常用于回归测试中,市面上也存在很多开源的自动化测试的工具和理论知识,今天我要说的是RobotFramework这个工具;

我也是在偶然的机会中接触到了RobotFramework这个工具,并且觉得形式很新颖,一下就被吸引了,RobotFramework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行,下面我们就进入正题吧!

2 工具分析

1.当我们把工具安装完成后,会在我们的桌面看到一个小图标,我们以后编写用例,就依赖他了(有感兴趣的小伙伴可以私聊我要安装过程,在此就不赘述了):

浅析RobotFramework工具的使用 | 京东物流技术团队

2.当我们双击这个图标后,会进入一个“赏心悦目”的编辑界面;

浅析RobotFramework工具的使用 | 京东物流技术团队

  • 项目编辑区会展示我们已经创建的项目、用例和已经创建的关键字资源;这里的关键字可以为我们以后的用例带来很多方便,适用于写通用的逻辑,方便我们在用例编写时遇到相同的逻辑去调用;
  • 编写用例可以通过脚本编辑区与表格编辑区;
    • 当鼠标定位到某条case时,会展示表格编辑区:和脚本编辑区一样只是一种是通过编写脚本的方式实现,一种是通过excel表格的方式来实现用例的编写;-

浅析RobotFramework工具的使用 | 京东物流技术团队

    • 脚本编辑区:不论通过表格编辑还是通过脚本编辑最后都会在脚本编辑区生成对应脚本

浅析RobotFramework工具的使用 | 京东物流技术团队

  • 当鼠标定位到项目上时,在右侧部分会展示我们编写用例所使用到的case和Resource文件;
  • 用例执行区,展示在右侧Run的部分,通过这个部分我们可以执行我们的用例,也可以查看生成的报告、log等内容;

浅析RobotFramework工具的使用 | 京东物流技术团队

3.工具适用场景
个人认为比较适合接口自动化测试场景;

4.工具支持jenkins平台整合
jenkins是一个功能非常强大的持续集成和持续交付的开源项目,几乎可以处理任何类型的自动构建或者持续集成,所以它必然是可以结合RF进行自动化测试的部署和调度,具体实现步骤大体如下:

  • 下载jenkins
  • 添加节点
  • 安装RF插件
  • 配置job运行测试

注: 具体实践本次分享暂不展开;

优劣势分析

优势:

  • 通过使用关键字驱动测试(KDT)方法简化了自动化测试过程,方便测试人员创建易读的测试。
  • 测试数据语法简单易用。
  • 生态系统丰富。由各种通用测试库和工具组成,这些工具都是作为独立项目开发的。
  • 具有高度可扩展性。

劣势:

  • 仅支持python2.的版本;
  • 界面反应速度慢,经常卡死;
  • 导入测试库有时会异常;

3 关键字介绍

1.在编写case过程中,进行了一些关键字的梳理,关于变量,详情如下:

  • Set Suite Variable 使用此关键字设置的变量在当前执行的测试套件的范围内随处可用
  • Set Global Variable 使用范围:在所有测试套件中都可以使用该关键字定义的变量。
  • Set Test Variable 使用范围:使用此关键字设置的变量在当前执行的测试用例的范围内随处可用
  • Set Variable 使用范围:该关键字主要用于设置标量变量。此外,它可用于将包含列表的标量变量转换为列表变量或多个标量变量。建议在创建新列表时使用创建列表。使用此关键字创建的变量仅在创建它们的范围内可用

2.excellibrary方法总结:

  • Open Excel 打开Excel文件
  • Get Row Count 获取行数
  • Get Column Count 获取列数
  • Get Row Values 获取某一行的值
  • Get Column Values 获取某一列的值
  • Read Cell Data By Coordinates 通过列行编号获取值
  • Read Cell Data By Name 按名称读取单元格数据

3.Run Keyword If

  • 函数释义:如果给出的判断条件满足,就执行给出的关键字。
  • 函数结构范例:
    • Run Keyword If 判断条件 其他关键字
    • … ELSE IF 判断条件 其他关键字
    • … ELSE 判断条件 其他关键字

4.Strip String去掉前后空白字符
5.Remove String 删除指定字符串

6.关于时间
${time} get current date #获取当前时间
${time_stamp} convert date ${time} epoch #转化为原始时间戳
${time_stamp2} evaluate int(round(${time_stamp}*1000)) #转化为毫秒级时间戳

4 案例分享

根据我们以往的经验,简单来说我们写用例大概分为几个步骤:

  • 创建一个项目;
  • 在这个项目下加入我们要实现的case;
  • 实现这个case,加入case的灵魂;
  • 执行这个case;
  • 查看case结果;

好!那么我们根据上边的思路来试着编写一条用例吧!在这里呢我就以我们常用的比较简单的国际供应链履约调度系统的入库单接口为例:

1)首先我们来创建一个项目:在File—>New Project,会出现一个弹窗我们按照自己的喜好来起就可以,这里我们创建的是入库单我们暂时叫它“testIn”吧,别忘记最重要的,类型我们需要选择Directory;

浅析RobotFramework工具的使用 | 京东物流技术团队

这样我们的项目就创建完成了;

2)创建case:

在Robot中我们首先需要创建一个testSuite,因为在Robot中case都是挂在Suite下的,在项目上右击—>New Suite,这里需要输入一个Suite的name,这里我们叫它“test_Instock”吧;

浅析RobotFramework工具的使用 | 京东物流技术团队

Suite创建好后我们可以在Suite下创建case了,在test_Instock—>New Test Case,case名称我们可以叫做“入库单下发成功”

浅析RobotFramework工具的使用 | 京东物流技术团队

3.截至目前,我们前期的创建工作就结束了,我们需要开始写case的灵魂了,在这里我们可以直接在表格中编辑;编写的过程中跟我们在python编写用例的过程是一样的,需要接口的信息,入参,及回参的校验;

浅析RobotFramework工具的使用 | 京东物流技术团队

因我们有很多其他类似接口,这里我们可以把发送post请求部分和校验返回参数部分单独以关键字的方式实现:test Instock—>New User Keyword,创建关键字,名称我们叫它“发送post请求”和“校验返回参数”吧!
这样我们可以再看下,抽离了关键字的用例,从一个大文件变成了三个小文件,更方便我们查看用例流程:

关键字抽离的case:

浅析RobotFramework工具的使用 | 京东物流技术团队

“发送post请求”关键字部分

浅析RobotFramework工具的使用 | 京东物流技术团队

校验返回参数”关键字部分

浅析RobotFramework工具的使用 | 京东物流技术团队

当我们case的灵魂完整实现后,我们可以来执行一下看看拉,哇哦!执行报错了

浅析RobotFramework工具的使用 | 京东物流技术团队

在这里我们可以看到明显的报错,就不需要去Report里查看了,如果当我们的报错不能明显看到时,我们需要去Report里查看具体的报错信息,Report会标记报错在哪一行,这样方便定位问题,言归正传,我们看到这个报错时没有发现get current date的主键,好我们去引入下这个库(具体引入库的讲解上边已经说过了哈)

5.引入完成后,我们再执行一遍,就这样我们的case顺利通过了

浅析RobotFramework工具的使用 | 京东物流技术团队

6.以下为脚本编辑器显示的上述用例内容:

浅析RobotFramework工具的使用 | 京东物流技术团队

5 问题总结

在我们编写case的过程中,我们会遇到很多这样或那样的问题,我也总结了一些,大家可以做为参考:

1)发送post请求,报错类型转换错误:

请求一共四个参数死活报错。。。

浅析RobotFramework工具的使用 | 京东物流技术团队

解决方案:
首先第一种尝试,将所有参数放在一个字典里,No!:

浅析RobotFramework工具的使用 | 京东物流技术团队

第二种尝试,将参数拿出来单独赋值,发现不行!!:

浅析RobotFramework工具的使用 | 京东物流技术团队

第三种尝试,将值写成字符串格式给${data},然后再将${data}赋值给post请求的data,不行!!:

浅析RobotFramework工具的使用 | 京东物流技术团队

第四种尝试直接将字符串赋值给post请求的data,艾玛,过了:

浅析RobotFramework工具的使用 | 京东物流技术团队

2.cmd输入 pip list 报错:

浅析RobotFramework工具的使用 | 京东物流技术团队

解决方案:一般 9.0.X 版本会出现如上提示,需要定义输出格式;

pip list —format=legacy 错误木有了

浅析RobotFramework工具的使用 | 京东物流技术团队

作者:京东物流 亢永超

来源:京东云开发者社区 自猿其说 Tech 转载请注明来源

点赞
收藏
评论区
推荐文章
Stella981 Stella981
3年前
Katalon 学习笔记(一)
工具介绍:KatalonStudio是一个能提供一整套功能来实现Web,API和Mobile的全自动测试解决方案的自动化测试平台。KatalonStudio构建于开源Selenium和Appium框架之上,通过减少学习和集成这些框架以满足自动化测试需求所需的工作量和专业知识,使团队能够快速开始测试自动化。与其他流行工具
Easter79 Easter79
3年前
TestNG+Selenium
是一个开源自动化测试框架。其实类似于JUnit这种单元测试框架,但进行了一些功能扩展属于selenium?还是说TestNG是一个测试框架,它用到了selenium的web自动化测试的功能,比如使用浏览器对应的driver去进行操作,不一定要由RobotFramework触发参考TestNG环境设置(
Stella981 Stella981
3年前
Jenkins+RF持续集成测试(一) 环境搭建
通常在自动化测试中,我们需要对自动化测试用例定时构建,并生成报告并通过邮件发给指定的人。最佳工具选择莫过于Jenkins了。通过Jenkins集成robotframework插件,我们能非常方便的定时从git/svn上拉取最新的自动化测试用例,然后执行用例并把最终结果以测试报告的形式发给指定的人群。下面我就来详细为大家介绍一下Jenkins集成RF插件
Stella981 Stella981
3年前
Robot Framework 使用【1】
前言RobotFramework作为公司能快速落地实现UI自动化测试的一款框架,同时也非常适合刚入门自动化测试的朋友们去快速学习自动化,笔者计划通过从搭建逐步到完成自动化测试的过程来整体描述它的使用。RobotFramework环境搭建步骤RobotFramework
Stella981 Stella981
3年前
RSAC2019创新沙盒大赛公司shiftleft介绍
!(https://oscimg.oschina.net/oscnet/8c90299fbb33785510ed9cdc8ef611800c0.jpg)概念:本身ShiftLeft这个单词的在测试行业的意思就是将软件测试阶段尽量前置,测试、开发人员使用项目管理、自动化测试工具全量参与到软件开发活动中。ShiftLeft这家公司于17年
Stella981 Stella981
3年前
Parasoft cpptestcli 指令行参数配置
ParasoftCtest  是款功能非常强大的自动化测试工具,能有效提高软件开发效率和代码质量。功能特点如下:    静态代码分析和编码策略实施;  自动代码审查的图形界面和进度跟踪;  自动化的单元测试和回归测试;  代码覆盖率分析,集成通过应用层覆盖跟踪从单元级测试;  结合静态分析、单元测试、代码评审和其他
Wesley13 Wesley13
3年前
2020年全网最全的自动化测试面试题及答案
!(https://img2020.cnblogs.com/blog/2013850/202005/2013850202005052031210891855777955.jpg)一、如何把自动化测试在公司中实施并推广起来的?1.项目组调研选择自动化工具并开会演示demo案例,我们主要是演示selenium和robotframework
新支点小玉 新支点小玉
1年前
如何缩短软件检测周期,快速拿结果!
什么是测试周期?  我们将测试周期定义为由测试人员以预定义的开始日期和结束日期进行测试的时间。  如何加快测试过程?  为了加快测试过程,您可以遵循以下几点:保持井井有条、使用智能测试数据、进行清晰简洁的自动化测试、执行并行测试、采用模块化方法、了解测试金字塔、跨浏览器测试策略,以加快您的测试、寻找正确的参数、使用工具  回归测试测试的五个阶段是什么?  这些是测试的五个阶段:静态测试、单元测试、集成测试、系统测试和验收测试。
陈哥聊测试 陈哥聊测试
10个月前
如何选择合适的自动化测试工具?
自动化测试是高质量软件交付领域中最重要的实践之一。在今天的敏捷开发方法中,几乎任一软件开发过程都需要在开发阶段的某个时候进行自动化测试,以加速回归测试的工作。自动化测试工具可以帮助测试人员以及整个团队专注于自动化工具无法处理的各自任务,但困难的部分就是选择