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. 千年荒漠变绿洲,看沙漠“卫士”携手昇腾AI植起绿色希望

    摘要:风沙肆虐,沙漠侵蚀神州大地,华东师范大学基于昇腾AI基础软硬件平台研制的种树机器人成为沙漠"卫士",穿越戈壁,跨越千里,为荒漠治理贡献力量!华师大携手昇腾AI共同植起绿色希望 ...

  2. tsconfig.json在配置文件中找不到任何输入,怎么办?

    摘要:原来在我们创建tsconfig.json文件的时候,VSCode会自动检测当前项目当中是否有TS文件:如果没有的话,就会报这个错提示我们去创建一个文件,再去使用. 本文分享自华为云社区<t ...

  3. openGauss内核分析:查询重写

    摘要:查询重写优化既可以基于关系代数的理论进行优化,也可以基于启发式规则进行优化. 本文分享自华为云社区<openGauss内核分析(四):查询重写>,作者:酷哥. 查询重写 SQL语言是 ...

  4. 云图说|图解DGC:基于华为智能数据湖解决方案的一体化数据治理平台

    摘要:数据湖治理中心DGC,帮助企业快速构建从数据集成到数据服务的端到端智能数据系统,消除数据孤岛,统一数据标准,加快数据变现,实现数字化转型. 本文分享自华为云社区<[云图说]第232期 图解 ...

  5. 火山引擎DataLeap推出两款大模型应用: 对话式检索与开发 打破代码语言屏障

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群   自上世50年代,以"计算机"作为代表性象征的信息革命开始,社会对于先进生产力的认知便开始逐 ...

  6. Jenkins Blue Ocean

    介绍 Blue Ocean 是 pipeline 的可视化UI.同时兼容经典的自由模式的 job.Jenkins Pipeline 从头开始设计,但仍与自由式作业兼容,Blue Ocean 减少了经典 ...

  7. 使用 Diffusers 通过 DreamBooth 来训练 Stable Diffusion.md

    邀请参与我们的 DreamBooth 微调编程马拉松活动! DreamBooth 是一种使用专门的微调形式来训练 Stable Diffusion 的新概念技术.一些人用他仅仅使用很少的他们的照片训练 ...

  8. sqlalchemy 报错 Lost connection to MySQL server during query 解决

    最近在开发过程中遇到一个sqlalchemy lost connection的报错,记录解决方法. 报错信息 python后端开发,使用的框架是Fastapi + sqlalchemy.在一个接口请求 ...

  9. 第一章 Linux系统编程

    Linux基础命令 ctrl + l //快速清屏 rm 文件名 //删除文件,rm *.o表示删除所有.o后缀的文件 mkdir 目录名 //创建一个目录 touch 文件名 //创建一个文件 tr ...

  10. 通义千问,阿里版ChatGPT,拿到邀请码了

    大家好,我是章北海mlpy 通义千问是阿里巴巴推出的一个大型预训练模型,是达摩院自主研发的超大规模语言模型,能够回答问题.创作文字,还能表达观点.撰写代码. 昨天中午,阿里云通过官方微信公众号对旗下的 ...