RobotFrameWork接口报文测试-----(一)简单demo的实现
最近几个月的工作任务都是通过使用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.documentElement
root.setAttribute('id',iid)
elements={'ClientType':'','TerminalType':'','UserType':'','AppType':'','UserLoginType':'','UserName':'tes','ProductName':'FMS101','UserPassword':'','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=""><UserName var="loleina"/><UserType var=""/><UserLoginType var=""/><AppType var=""/><ClientType var=""/><LoginServerAddr var="www.fsmeeting.com:1089"/><UserPassword var=""/><TerminalType var=""/><ProductName var="
FMS101"/></cmd>
就把{send_buf}给底层py发送给服务器就完成了,在rf内的测试用例如下:
简单粗暴的demo就这样完成了,跟领导演示了下,就大致敲定了使用这个框架来完成服务器接口测试了,接下来我就可以展开更细致的工作了。后面问题就来了:
1. 步骤这么多,难道每写一个脚本都要重复一次么?
2. 每个接口的sendbuf的xml的格式是不一样的,id不一样,里面的tag的nodename也是不一样的,这要怎么办?难道每个接口都给写一个createSendBuf么,肯定不是这样的,那要怎样去做?
其实还有很多的问题,比如连接数据库的考虑,执行前连接服务器,数据与测试用例分离考虑,底层py调用导出函数的封装,接口之间的逻辑关系处理等等一系列问题,但是现在急需解决的问题是上面的2个问题,脚本怎么简化,每个接口xml该怎么组织起来(服务器知道xml格式,能将用户输入的参数放到xml里去)。然后看了下网上的各种教程,接下来确定需要做的就是对RF框架的熟悉和python语言本身的学习。
RobotFrameWork接口报文测试-----(一)简单demo的实现的更多相关文章
- RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)
在上一篇RobotFrameWork接口报文测试-----(二)demo的升级版基础上,将接口的xml的格式保存在xml文件中,然后程序如果增加一个接口,在xml文件里添加即可,无需修改自动化测试里的 ...
- RobotFrameWork接口报文测试-----(二)demo的升级版
在上一篇,简单的demo实现了讲xml的数据发送服务器端并取得recvi_buf,然后进行了简单的解析的操作.现在就要解决之前提过的2个问题: 1. 步骤这么多,难道每写一个脚本都要重复一次么? 2. ...
- Axis2创建WebService服务端接口+SoupUI以及Client端demo测试调用
第一步:引入axis2相关jar包,如果是pom项目,直接在pom文件中引入依赖就好 <dependency> <groupId>org.apache.axis2</gr ...
- SoapUI 利用SoapUI进行简单的接口并发测试
利用SoapUI进行简单的接口并发测试 by:授客 QQ:1033553122 测试环境: SoapUI Pro 5.1.2 步骤如下 1. 把请求添加到测试套件 1.1. 途径1 1.新 ...
- RocketMQ初探(二)之RocketMQ3.26版本搭建(含简单Demo测试案例)
作为一名程序猿,要敢于直面各种现实,脾气要好,心态要棒,纵使Bug虐我千百遍,我待它如初恋,方法也有千万种,一条路不行,换条路走走,方向对了,只要前行,总会上了罗马的道. Apache4.x最新版本既 ...
- Spring的简单demo
---------------------------------------- 开发一个Spring的简单Demo,具体的步骤如下: 1.构造一个maven项目 2.在maven项目的pom.xml ...
- 利用unittest+ddt进行接口测试(一):简单demo
一般进行接口测试时,每个接口的传参都不止一种情况,一般会考虑正向.逆向等多种组合.所以在测试一个接口时通常会编写多条case,而这些case除了传参不同外,其实并没什么区别. 这个时候就可以利用ddt ...
- robotframwork接口测试(五)—接口分层测试粗解
个人小结,仅供参考. 接口测试很简单,但是很重要. 可以写代码,也可以用工具进行测试.工具说说就很多了,简单介绍一下我目前用过的几个能够测试接口的工具, Burpsuite:这类偏请求攻击类软件 Fi ...
- Spring环境搭建及简单demo
1. Spring框架简介(以下这段话可用于面试求职) Spring为JavaEE开发提供了一个轻量级的解决方案,主要表现为, IOC(或者叫做DI)的核心机制,提供了bean工厂(Spring容器) ...
随机推荐
- SSH原理与运用(二):远程操作与端口转发
SSH原理与运用(二):远程操作与端口转发 作者:阮一峰 (Image credit: Tony Narlock) 七.远程操作 SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一 ...
- Java学习-012-文件删除实例及源代码
此文源码主要为应用 Java 创建文件的源代码.若有不足之处,敬请大神指正,不胜感激! 文件删除源代码如下: /** * @function 文件操作:删除文件.若文件存在且未被占用,则删除文件:若文 ...
- http和网页设计
.基本概念: CGI(Common Gate Interface,通用网关接口) HTML均是静态网页,它无法实现一些复杂的功能,而CGI可以为我们实现. get方式提交表单: 当表单被发送到服务器断 ...
- ifconfig命令(转)
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- Linux就这个范儿 第8章 我是Makefile
Linux就这个范儿 第8章 我是Makefile P287 Makefile的作用就是——自动化编译,一旦写好,只需要一个make命令(解析Makefile,执行Makefile中描述的操作),整个 ...
- Android studio关于真机调试DDMS中的data文件夹打不开的解决方法
由于做开发的时候想打开查看数据库存放的内容,在eclipse中数据库文件默认就在/data/data/应用包名/databases/数据库名,而用Android studio打开DDMS下面找时发现点 ...
- mysql中文乱码问题
1.mysql客户端在插入中文字符的时候可能出现乱码问题. 原因: 要解决字符集的问题,首先要知道现在的系统.数据库.表.客户端等使用什么样的字符集,以及系统支持什么字符集等. 2.我百度了好多,说 ...
- [BS] 小知识点总结-04
1. ios新知识学习思路: 在开发过程中如果遇到某种新需求以前从未做过,例如改变textField的Placeholder颜色,有如下思路和途径: 1.1 在Storyboard/Xib辅助编辑器A ...
- iOS网络开发之AFNetworking
概述 AFNetworking是一个非常受欢迎的轻量级的iOS.Mac OS X网络通信类库.它建立在NSURLConnection.NSOperation以及其技术的基础上,有着精心设计的模块结构和 ...
- 关于IOS框架的解释