首页 > 其他分享 >浅析RobotFramework工具的使用 | 京东物流技术团队

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

时间:2023-12-29 10:12:54浏览次数:38  
标签:case 用例 创建 RobotFramework 我们 关键字 测试 京东 浅析

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 转载请注明来源

标签:case,用例,创建,RobotFramework,我们,关键字,测试,京东,浅析
From: https://www.cnblogs.com/Jcloud/p/17934135.html

相关文章

  • 日志框架简介-Slf4j+Logback入门实践 | 京东云技术团队
    前言随着互联网和大数据的迅猛发展,分布式日志系统和日志分析系统已广泛应用,几乎所有应用程序都使用各种日志框架记录程序运行信息。因此,作为工程师,了解主流的日志记录框架非常重要。虽然应用程序的运行结果不受日志的有无影响,但没有日志的应用程序是不完整的,甚至可以说是有缺陷的......
  • java浅拷贝BeanUtils.copyProperties引发的RPC异常 | 京东物流技术团队
    背景近期参与了一个攻坚项目,前期因为其他流程原因,测试时间已经耽搁了好几天了,本以为已经解决了卡点,后续流程应该顺顺利利的,没想到人在地铁上,bug从咚咚来~没有任何修改的服务接口,抛出异常:java.lang.ClassCastException:java.util.HashMapcannotbecasttocn.xxx.xxx.xxx.xxx.Ba......
  • java浅拷贝BeanUtils.copyProperties引发的RPC异常 | 京东物流技术团队
    背景近期参与了一个攻坚项目,前期因为其他流程原因,测试时间已经耽搁了好几天了,本以为已经解决了卡点,后续流程应该顺顺利利的,没想到人在地铁上,bug从咚咚来~没有任何修改的服务接口,抛出异常:java.lang.ClassCastException:java.util.HashMapcannotbecasttocn.xxx.xxx.xxx.xx......
  • Nuscenes数据集浅析
    Nuscenes主要在波士顿和新加坡进行,用于采集的车辆装备了1个旋转雷达(spinningLIDAR),5个远程雷达传感器(longrangeRADARsensor)和6个相机(camera)一、数据集结构:(借用https://zhuanlan.zhihu.com/p/463537059生图)从左到右四列分别是Vehicle(采集数据所用的交通工具)、Extraction(所采......
  • 浅析消防应急照明和疏散指示系统的设计在建筑行业的应用
    安科瑞张田田【摘要】:火灾时*先要保证的是生命安全,尽*大努力保全人命大于一切。人员疏散本就是一个棘手的问题,随着我国经济发展,楼层越来越高,建筑内的人口密度越来越大,一旦发生火灾,人员疏散的难度很大。火灾时疏散通道上的应急照明和疏散指示对人员的逃生有着至关重要的作用。设计......
  • 性能翻倍!京东亿级体量小程序优化实践
    一、前言小程序性能是指小程序在微信APP或者其他宿主APP中加载和呈现的速度,以及小程序对用户交互的响应程度。性能欠缺的小程序渲染和响应速度较慢,甚至会出现无法正常打开小程序的情况,在不同程度上极大地影响了用户体验,从而导致用户流失。京东购物小程序随着更多业务不断的更新......
  • 决定了,今日起开始准备弃用京东JD
    估计京东是为了节约开支,然后开始大比例的把快递物流业务进行外包了,这直接导致服务质量的直线下滑,10多年前我选择弃用当当网而选择京东JD就是因为当时当地的当当网快递是用沈阳晚报的快递上门的,快递员连POS机都不会用,场面十分的尴尬,谁又能想到10多年后的今天,京东也开始用外包快递了......
  • HBase深度历险 | 京东物流技术团队
    简介HBase的全称是HadoopDatabase,是一个分布式的,可扩展,面向列簇的数据库,是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。本文会像剥洋葱一样,层层剥开她的心。特点首先我们看一下hbase有哪些特点:•高性能基于LSM树的数据结构设计,保证了顺序写,并且......
  • HBase深度历险 | 京东物流技术团队
    简介HBase的全称是HadoopDatabase,是一个分布式的,可扩展,面向列簇的数据库,是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案。本文会像剥洋葱一样,层层剥开她的心。 特点首先我们看一下hbase有哪些特点:•高性能基于LSM树的数据结构设计,保证了......
  • 大数据从业者必知必会的Hive SQL调优技巧 | 京东云技术团队
    摘要:在大数据领域中,HiveSQL被广泛应用于数据仓库的数据查询和分析。然而,由于数据量庞大和复杂的查询需求,HiveSQL查询的性能往往不尽人意。本文针对HiveSQL的性能优化进行深入研究,提出了一系列可行的调优方案,并给出了相应的优化案例和优化前后的SQL代码。通过合理的优化策略和技......