最近几个月的工作任务都是通过使用RF工具来搭建服务器端接口的自动化测试,使用python作为2次开发的语言,也是第一次去做这种项目,经验善浅,还是很有可能会走很多的弯路,为此,我希望自己能把每个阶段的进展还有点滴的收获,在此记录,然后能有个总结。

在15年的时候,我做过java web的接口自动化测试的开发工作,使用的技术比较简单:webService的XFIRE框架+testNG+Dom+POI,属于纯java代码构成,结合ant可以单独部署使用,是基于soap协议的(基于http协议),只需要组织好输入的参数,然后将参数传递给本地的接口,本地接口再调用远程服务的接口,就能得到实际返回值,实现比较简单。而这次主要工作如下:组装成一定格式的xml,然后发送给服务器端,然后从reciv_buf内提取需要进行check的字段的数据(实际结果),再将实际测试结果和预期测试结果进行比较。

由于RF是基于关键字进行组织测试用例的,所以在做最初级的demo时,只做了简单的处理,自定义一个lib,提供createSendBuf这个关键字(输入参数:报文id),能返回符合发送给服务器端格式的报文。然后lib内能调用dll文件,与服务器取得联系后,直接把报文发送给服务器,并取得返回结果(dll由开发提供,只需要在py脚本内对dll的导出函数进行调用即可封装成想要的关键字),然后再提供关键字paraseRecivBuf(输入参数:报文内的字段),这个关键字,可以从RecivBuf中拿到特定字段的取值,最后把这个值跟预期的进行对比即可。

第一次做出来的demo,可以用简单粗暴形容。xml数据组装如下:用一个list保存tag的name,然后用一个dict来保存tag的name(key)和tag对应var属性的值(value)。然后组装成xml格式的内容。部分代码如下:

 #创建文档对象,文档对象用于创建各种节点。dom1=xml.dom.getDOMImplementation()doc=dom1.createDocument(None,"cmd",None)# 得到根节点root = doc.documentElementroot.setAttribute('id',iid)elements={'ClientType':'1','TerminalType':'1','UserType':'1','AppType':'20','UserLoginType':'1','UserName':'tes','ProductName':'FMS101','UserPassword':'000000','LoginServerAddr':'192.168.5.195:1089'}key=['ClientType','TerminalType','UserType','AppType','UserLoginType','UserName','ProductName','UserPassword','LoginServerAddr']for i in range(len(key)):#elementNode=create_element(doc,element,'var',elements[element])elementNode=doc.createElement(key[i])elementNode.setAttribute('val',elements[key[i]])root.appendChild(elementNode)return root.toxml()

后面返回的xml格式如下:

{send_buf}=<cmd id="30000"><UserName var="loleina"/><UserType var="1"/><UserLoginType var="1"/><AppType var="11"/><ClientType var="1"/><LoginServerAddr var="www.fsmeeting.com:1089"/><UserPassword var="000000"/><TerminalType var="1"/><ProductName var="
         FMS101"/></cmd>

就把{send_buf}给底层py发送给服务器就完成了,在rf内的测试用例如下:

简单粗暴的demo就这样完成了,跟领导演示了下,就大致敲定了使用这个框架来完成服务器接口测试了,接下来我就可以展开更细致的工作了。后面问题就来了:

1. 步骤这么多,难道每写一个脚本都要重复一次么?

2. 每个接口的sendbuf的xml的格式是不一样的,id不一样,里面的tag的nodename也是不一样的,这要怎么办?难道每个接口都给写一个createSendBuf么,肯定不是这样的,那要怎样去做?

其实还有很多的问题,比如连接数据库的考虑,执行前连接服务器,数据与测试用例分离考虑,底层py调用导出函数的封装,接口之间的逻辑关系处理等等一系列问题,但是现在急需解决的问题是上面的2个问题,脚本怎么简化,每个接口xml该怎么组织起来(服务器知道xml格式,能将用户输入的参数放到xml里去)。然后看了下网上的各种教程,接下来确定需要做的就是对RF框架的熟悉和python语言本身的学习。

转载于:https://www.cnblogs.com/loleina/p/5312653.html

RobotFrameWork接口报文测试-----(一)简单demo的实现相关推荐

  1. spring boot 集成springfox,使用swagger对 API 接口进行测试管理的 demo 示例

    1. 描述 一个springboot项目集成 springfox 3.0,使用swagger对 API 接口进行测试管理的 demo示例. 环境: IDE(idea):2021.3 JDK:1.8 m ...

  2. Mondrian 4 测试的简单demo(Saiku简单测试Schema文件)

    ## 整理此文章方便大家做测试(手写Mondrian Schema自测),不必每次都向saiku上传文件了 ## 关键文件 * foodmart4.xml  测试对应的schema文件 * foodm ...

  3. 【简书 DC谢老师】JMeter + jenkins + SVN 接口自动化之简单 demo​​​​​​​

    JMeter工具基础知识篇-工程目录结构及命名规范 如果没有目录结构及命名规范,你压根没法实现自动化的持续集成工作,你将被局限在工具级别的自动化上面,离测试框架或测试平台平台之路遥遥无期. 如果你想成 ...

  4. 京东个人实名认证接口personalAuth后端简单demo

    京东个人实名认证接口personalAuth后端简单demo 近期项目需要接入京东云二要素实名认证接口,并未找到java后端调用试例,简单记录下 使用maven管理 下面为 maven依赖. < ...

  5. 用python做简单的接口压力测试

    一个多月没有更博了,最近研究了一下接口的压力测试,主要来说就是连续频繁的对接口的调用,来测试接口的响应速度.返回结果,找到接口的性能瓶颈,最大承受极限等. 做接口压力测试的方法和工具很多,比较常用的工 ...

  6. 【实战】RobotFramework接口自动化-全局变量解决保持登录问题

    Robotframework是一个利用关键字驱动实现自动化的框架,可以同时实现web.app.接口自动化测试.RF的使用类似于运行一个表格,测试人员往表格内填充文本,即可轻松实现自动化测试. 本文的目 ...

  7. 你写的接口都测试吗?测什么?怎么测?

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:https://www.cnblogs.com/puresoul/p/5388586.html 本文主要分为两个部分: 第一部 ...

  8. 后端接口都测试什么?要怎么测?

    作者:Glen.He 来源:http://www.cnblogs.com/puresoul/ 本文主要分为两个部分: 第一部分: 主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两 ...

  9. robotframwork接口测试(五)—接口分层测试粗解

    个人小结,仅供参考. 接口测试很简单,但是很重要. 可以写代码,也可以用工具进行测试.工具说说就很多了,简单介绍一下我目前用过的几个能够测试接口的工具, Burpsuite:这类偏请求攻击类软件 Fi ...

最新文章

  1. Windows10上使用VS2017编译OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.6.2操作步骤
  2. 6位技术大咖11月倾心巨献,大数据+安全主题的技术分享合集【阿里云MVP 干货集锦】...
  3. 第十六届全国大学智能汽车竞赛全向组沁恒芯片申请统计情况
  4. 第四范式先知(Sage)率先通过欧盟GDPR认证
  5. IdentityServer4系列 | 授权码模式
  6. Cmd Markdown 编辑阅读器
  7. win7屏保时间设置_论如何优雅的设置手机和电脑时间屏保!
  8. php数组超索引,php数组多维索引
  9. nodeJS之域名DNS
  10. danfoss 变频器的profinet通讯调试_西门子G120变频器S7-300之间的PN通讯
  11. CentOS安装打字游戏,typespeed
  12. 两台计算机之间的远程连接
  13. When I’m old and dying
  14. Android开发-模拟器推荐
  15. Java——博主的学习路线
  16. CityMaker研修之路 02 伟景行(CityMaker)的倾斜之路
  17. 小米回应年底裁员:事情确实有,规模没那么大;华为关闭其在俄罗斯的企业事业部|极客头条...
  18. 传奇私服各类引擎功能介绍
  19. Atom编辑器活跃用户突破一百万
  20. Basler相机常见问题

热门文章

  1. android图像处理(3)底片效果
  2. 0ctf 2017 kernel pwn knote write up
  3. poj 3254 Corn Fields 状态压缩dp
  4. Linq to sql与EF零碎知识点总结
  5. Linux下命令行(二)之文本处理基础
  6. OpenCV的示例程序在哪里?
  7. linux 启动脚本 tty,Linux启动过程简介
  8. java注解详解_Java注解详解
  9. 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
  10. paramiko使用1