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容器) ...
随机推荐
- 算法训练 Hanoi问题
算法训练 Hanoi问题 时间限制:1.0s 内存限制:512.0MB 问题描述 如果将课本上的Hanoi塔问题稍做修改:仍然是给定N只盘子,3根柱子,但是允许每次最多移动相邻的 ...
- ArcGIS Engine开发之旅08--和查询相关的对象和接口
原文:ArcGIS Engine开发之旅08--和查询相关的对象和接口 查询在GIS领域应该是一个很频繁的操作,在GIS中除了具有属性查询(和其他关系型数据库的查询类似),还提供了空间查询.在介绍查询 ...
- Spark Programming--Transformations
map 将RDD中的每个数据项,一对一的映射关系,RDD数目不变,分区数也不变 例子: 数据集: map操作: flatMap 和map一样,但是会拆分每一个map之后的list,可以理解为一对多(注 ...
- get 与 post
<form action="Default.aspx" method="get"> get 服务器端 用request.querystring来获 ...
- rem适配
//REM适配new function() { var _self = this; _self.width = 640; // 设置默认最大宽度 _self.fontSize = 100; // 默认 ...
- JavaScript:单选钮的事件处理
单选按钮事件: 单选钮属于多选一的处理流程,但是单选钮由于也是HTML元素,所以对于JavaScript而言也表示对象. 注意:单选钮的特点是一定要需要名相同才可以实现,所以此处如果名字相同,那么就是 ...
- Android各个版本 版本号对应关系表
Platform Version API Level VERSION_CODE Notes Android 5.0 21 LOLLIPOP Platform Highlights Android 4. ...
- Power-BI:从5方面助力您企业的发展
商务智能让企业得以使用自己的数据来预测销量趋势.分析ROI.追踪收益.做出更明智的产品和服务决策.商务智能可从5个方面让您成为“数据之星”,为您发展企业: 1.关注企业成长.而非数据 优质的BI工具最 ...
- 在windows下使用cmd命令行对java文件进行编译和执行
windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进行编译和执行,前提是jdk已成功安装并正确配置相关环境变量 相关配置链接:java基础学习总结—— ...
- EBS运行快速安装的程序时,提示DISPLAY变量设置不对
EBS运行快速安装的程序时,系统提示如下: Rapid Install Wizard is validating your file system...... >> Wizard requ ...