1 简介

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

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

2 工具分析

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

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

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

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

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

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;

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

2)创建case:

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

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

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

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

关键字抽离的case:

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

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

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

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

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

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

5 问题总结

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

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

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

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

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

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

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

2.cmd输入 pip list 报错:

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

pip list —format=legacy 错误木有了

作者:京东物流 亢永超

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

浅析RobotFramework工具的使用 | 京东物流技术团队的更多相关文章

  1. 浅析WINFORM工具条的重用实现

    一直以来,我都想看看别人家的工具栏重用(图1)到底是如何实现的,但在网上搜索了很久都没有找到过,即使找到一些程序,要么就是把这个工具栏写在具体的画面(图2),要么就是没有源代码的, 我在想,是否别人也 ...

  2. 有一个团队协同工具,叫Worktile

    项目管理,本是一个老生常谈的话题,曾几何时大碗云集在这个市场,其中不乏出现像微软.SAP.IBM.用友这样的名字.复杂而又冗繁的流程控制,让人们划分成两类人,一类是会使用这些工具和系统的人,另一类是不 ...

  3. 沙龙报名 | 京东云DevOps——自动化运维技术实践

    随着互联网技术的发展,越来越多企业开始认识DevOps重要性,在企业内部推进实施DevOps,期望获得更好的软件质量,缩短软件开发生命周期,提高服务稳定性.但在DevOps 的实施与落地的过程中,或多 ...

  4. 硬刚Google ,这家小公司的增长团队长啥样

    背景: AdRoll 是一家主打重定向广告(Retargeting)服务的技术公司,基于用户浏览记录等信息,为广告主提供几乎瞬时的广告位购买服务,当前估值15.5亿美元.吊打谷歌, AdRoll 已经 ...

  5. codeblocks+Mingw 下配置开源c++单元测试工具 google test

    google test 是google的c++开源单元测试工具,chrome的开发团队就是使用它. Code::Blocks 12.11(MinGW 4.7.1) (Windows版)Google T ...

  6. 使用git进行团队合作开发

    1.git 和 svn 的差异 git和svn 最大的差异在于git是分布式的管理方式而svn是集中式的管理方式.如果不习惯用代码管理工具,可能比较难理解分布式管理和集中式管理的概念.下面介绍两种工具 ...

  7. 构建ASP.NET网站十大必备工具(1)

    最近使用ASP.NET为公司构建了一个简单的公共网站(该网站的地址:http://superexpert.com/).在这个过程中,我们使用了数量很多的免费工具,如果把构建ASP.NET网站的必备工具 ...

  8. 我所了解的 京东、携程、eBay、小米 的 OpenStack 云

    参加过几次 OpenStack meetup 活动,听过这几家公司的Architect 讲他们公司的 OpenStack产品.本文试着凭借影响加网络搜索,按照自己的理解,对这些公司的 OpenStac ...

  9. 使用GitHub进行团队合作

    原文: Team Collaboration With GitHub GitHub已经成为的一切开放源码软件的基石.开发人员喜欢它,基于它进行协作,并不断通过它开发令人惊叹的项目.除了​​代码托管,G ...

  10. RobotFramework 安装配置(一)

    服务器接口的测试框架的选择,最后选中了 RobotFramework ,原因一:能有效的管理测试用例,,支持批量执行,能实现关键字驱动或者数据驱动.原因二:支持测试人员可以使用Python和java创 ...

随机推荐

  1. 跟我读论文丨ACL2021 NER 模块化交互网络用于命名实体识别

    摘要:本文是对ACL2021 NER 模块化交互网络用于命名实体识别这一论文工作进行初步解读. 本文分享自华为云社区<ACL2021 NER | 模块化交互网络用于命名实体识别>,作者: ...

  2. 华为云GuassDB(for Redis)发布全新版本推出:Lua脚本和SSL连接加密

    摘要:9月8日,华为云GuassDB(for Redis)正式推出全新版本.新版本内核带来性能提升.无损升级.慢日志统计等多维度产品体验,同时推出Lua脚本和SSL连接加密两大重要功能,让业务设计更加 ...

  3. 带你了解AKG正反向算子注册+关联流程

    摘要:简要介绍一下akg正反向算子的注册和关联流程. 本文分享自华为云社区<AKG正反向算子注册+关联>,作者:木子_007 . 一.环境 硬件:eulerosv2r8.aarch64 m ...

  4. iOS打包IPA教程

    ​ 转载:xcode打包导出ipa 众所周知,在开发苹果应用时需要使用签名(证书)才能进行打包安装苹果 IPA,作为刚接触ios开发的同学,只是学习ios app开发内测,并没有上架appstore需 ...

  5. Apache Pulsar 在火山引擎 EMR 的集成与场景

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近年来,基于云原生架构的新一代消息队列和流处理引擎 Apache Pulsar 在大数据领域发挥着愈发重要的作用, ...

  6. 愉快的了解Charles

    charles是PC端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析.除了在做移动开发中调式端口外,charles也可以用于分析第三方应用的通 ...

  7. Docker--简介&&安装

    Docker 是一种应用容器引擎 一 容器 Linux系统提供了Namespace和Cgroup技术实现环境隔离和资源控制 其中Namespace是Linux提供的一种内核级别环境隔离的方法,能使一个 ...

  8. POJ - 1113 Wall (凸包模板) Graham Scan 算法实现

    Description Once upon a time there was a greedy King who ordered his chief Architect to build a wall ...

  9. idea创建父子项目

    1. 首先创建大的project 父工程:  2. 点击下一步之后: 3. 点击下一步,填写项目存放地址,点击finish: 4. 完成之后删除不需要的文件,保留pom文件,检查对应的jar和spri ...

  10. springboot项目全局异常处理@ControllerAdvice(方式二)

    SpringMVC 中 @ControllerAdvice 注解的三种使用场景!   @ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义 ...