RobotFrameWork接口报文测试-----(二)demo的升级版

在上一篇,简单的demo实现了讲xml的数据发送服务器端并取得recvi_buf,然后进行了简单的解析的操作。现在就要解决之前提过的2个问题:

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

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

针对第一个问题的解决,可以使用在RF内定义自己的Resource,然后写直接调用资源内定义的关键字,一行就是一条测试用例,这个问题解决很简单。针对第二个问题,应该用一个xml文件保存每个接口的格式,定义个一个关键字,输入接口的id,就能从xml中得到相应接口的格式,再从RF内接受接口里每个字段的取值,一起组合成send_buf,交给底层py调用含有网络通讯层的dll即可。

从xml根据id得到相应接口的报文格式的实现如下:

    def findNodeByIdAttr(self,idAttr):

        root = xml.dom.minidom.parse("D:/test2.xml").documentElement

        node = root.getElementsByTagName(‘cmd‘)

        for k in node:

            if(k.getAttribute(‘id‘)==idAttr):

                str1= (k.toxml()).encode(‘utf-8‘)

                return  str1

这样就能更容易的管理报文了,如果增加了一个接口,直接在xml内进行格式定义即可。代码内部是没有涉及到具体报文里的具体字段,便于维护。接下来就是把从RF里得到的报文字段的取值(定义在list内),把具体值和对应的xml组合起来。toxml()方法返回的数据的type不再是一个instance,而是str(egg:<cmd id="30000"><UserName var="name"/><LoginServerAddr var="www.abc.com:1089"/><UserPassword var="000000"/></cmd>),list的值为[‘loleina‘,‘192.165.5.144:1089‘,‘000000‘]现在就需要把这三个指分别赋值给UserName ,LoginServerAddr ,UserPassword 。得先将str转换成xml,再得到xml的tag的name,设置每个tag的attribute的值是list[i].代码实现如下:

    def packageToXml(self,strNode,listArray):

        tagNameList=[]
        length=len(listArray)

        str1=‘<?xml version="1.0"?><root>‘

        str2=‘</root>‘

        strNode+=str2
        strNode=str1+strNode
        root = xml.dom.minidom.parseString(strNode).documentElement

        node = root.getElementsByTagName(‘cmd‘)
        for child in node[0].childNodes:
            if((child.nodeName.startswith(‘#‘))==False):
                tagNameList.append(child.nodeName)

        for i in range(0,length):
            tagNode = root.getElementsByTagName(tagNameList[i])
            tagNode[0].setAttribute(‘val‘,listArray[i])

        return  node[0].toxml(encoding="utf-8")

 最后看下,RF的测试用例的设计:

就这样完成了demo,在最开始的时候遇到了好几个问题:

1. 项目的接口有多个xml,需要合并成一个xml提供给RF使用,每个xml的格式不一样,编码格式也不一样,而且xml里针对每个字段有注释,commentnode存在,得把注释去掉。(后面发现不去掉注释的xml,不去掉空格,空行的xml,交给底层的dll后,dll会进行预处理,整理好后再发给服务器)

2. 在xml内取tag的name的时,如果tagnode有childnode,按照上面的代码段是没有取出来的,这个后面得修改。

3. 从服务器返回的数据,根据接口类型的不同,增加类,删除类的接口或者只返回一个result字段的结果,查询,修改这类接口会返回很多的数据,数据还是从数据库查到的,这样结果这样简单的

处理肯定是不行了。得从数据库中查询,再按照一定的格式组装成xml,在把预期的结果xml和实际返回的xml做对比。

4. 去tagnode的name的时候,得判断下,因为xml内存在注释,注释也是一种弄的,称为commentnode。

5. 基于winsocket的接口测试跟基于http接口测试还是有很大区别的,http是无状态的协调,tcp本身就是有状态的协议。这注定前置的业务肯定比后者复杂很多,基于winsocket的接口,接口和接口之间的联系,存在一些运行时的临时变量,也就是说B接口的报文组成,来自于A接口报文的某些输出,该部分输出作为程序运行的临时变量,保存在程序内存中,而非数据库中,当B接口使用,就去拿就可以了。这时,做B接口势必需要拿到A的结果里的临时变量,这个随着后面业务的深入了解,应该会越来越明朗每个接口之间的关系。

这些问题在再深入点了解RF和Python,做demo的时候,就开始不断的思考了。在这推荐一个还不错的RF的学习网址:

http://blog.csdn.net/tulituqi/article/category/897484/2

这个博主还出了本书,我也给买了,实际上跟上面博客上写的内容差不太多,看看上面的也就够入门的了。

时间: 2024-10-13 12:30:51

RobotFrameWork接口报文测试-----(二)demo的升级版的相关文章

RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)

在上一篇RobotFrameWork接口报文测试-----(二)demo的升级版基础上,将接口的xml的格式保存在xml文件中,然后程序如果增加一个接口,在xml文件里添加即可,无需修改自动化测试里的其他模块,然后在工具加case就可以了,但是接口取值的数据全部都是直接在case里面录入的,也就是说,每增加一条测试用例,就需要在工具内添加一条case,测试数据始终都是在工具内控制,这让以前使用excel管理过测试数据的我感觉很不爽,总感觉得把数据放到excel内,然后实现数据驱动测试. 围绕着这

.NET MVC结构框架下的微信扫码支付模式二 API接口开发测试

直接上干货 ,我们的宗旨就是为人民服务.授人以鱼不如授人以渔.不吹毛求疵.不浮夸.不虚伪.不忽悠.一切都是为了社会共同进步,繁荣昌盛,小程序猿.大程序猿.老程序猿还是嫩程序猿,希望这个社会不要太急功近利 ,希望每个IT行业的BOSS要有良知,程序猿的青春年华都是无私默默奉献,都是拿命拼出来了现在的成就,如果卸磨杀驴,如果逼良为娼,请MM你的良心对得起你爹妈吗,你也有家,你也有小孩,你也有父母的. 在这里致敬程序猿, 致敬我们的攻城狮,致敬我们最可爱的人! 珍惜生命,换种活法也是依然精彩. Vie

使用Loadrunner进行http接口压力测试

业务描述: 在业务系统里进行查询操作,查询的结果是通过请求http接口,从系统中处理并将结果以json字符串返回. 本文就讲述使用Loadrunner对此类接口进行压力测试并记录相关的性能指标数据: 一.安装Loadrunner 本次测试过程使用Loadrunner 11.0版本. 二.部署环境 1.接口服务器一台; 2.用于运行Loadrunner的压力测试机1台或N台 ,在条件允许下,尽可能提供高配置的CPU 和内存. 3.接口服务器和压力测试机建议应部署于同一个局域网内,否则测试过程和结果

微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo

原文:微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 教程导航: 微信开放平台 公众号第三方平台开发 教程一 平台介绍 微信开放平台 公众号第三方平台开发 教程二 创建公众号第三方平台 微信开放平台 公众号第三方平台开发 教程三 一键登录授权给第三方平台 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo 前几章中我讲解了微信开发平台提供第三方平台的好处,和使用流程,如果你看了我的文章相信你对开放平台有了初步的了解,但是在实际的开发过程

移动支付平台间接口报文解析技术核心架构实现、及平台交易处理项目全程实录教程

<基于移动支付平台间接口报文解析技术核心架构实现.及平台交易处理项目全程实录>课程讲师:MoMo 课程分类:Java框架适合人群:中级课时数量:52课时用到技术:JavaBean .Spring3.X. SpringMVC. Hibernate3.X.Apache HttpClient 3.x.JUnit4.x.自定义Annotation + java反射技术涉及项目:移动支付平台间接口咨询QQ:1337192913 课程介绍:   本课程抛开理论.以项目为驱动,适用于初次接触报文收发.组装解

RIGHT-BICEP单元测试——“二柱子四则运算升级版”

RIGHT-BICEP单元测试 ——“二柱子四则运算升级版” ”单元测试“这对于我们来说是一个全新的专业含义,在上了软件工程这门课,并当堂编写了简单的"求一组数中的最大值"函数的单元测试之后,我们对它有了全新的认识. 单元测试:即为, 老师让我们回去之后将“二柱子四则运算升级版”的程序进行单元测试(二柱子程序的源码我已经上传,这里不再重复,只列举单元测试的部分和分析),如下: PS.这里附上老师上课讲的关于RIGHT-BICEP测试的方法: 6个值得测试的具体部位,他们能够提高我们的测

移动支付平台间接口报文解析核心架构及平台交易全程实录

移动支付平台间接口报文解析核心架构及平台交易全程实录 (HttpClient+SpringMVC+Spring3+Hibernate3+自定义Annotation) 课程分类:Java框架 适合人群:中级 课时数量:52课时 用到技术:JavaBean .Spring3.X. SpringMVC. Hibernate3.X.Apache HttpClient 3.x.JUnit4.x.自定义Annotation + java反射技术 涉及项目:移动支付平台间接口 咨询qq:1840215592

接口安全测试

一.后台接口分类 1.接口类别:restful(json) soap(xml) 2.协议 :http https(ssl) 3.restful接口请求类型 get操作是安全的 post的操作是不安全的 同put delete也是不安全的 4.现状和问题 大部分APP的接口都采用restful架构,restful最重要的一个设计原则就是客户端与服务端的交互在请求之间是无状态的.大部分都采用token的认证方式. token分别在两台手机上登陆微信 二.接口安全设计原则 1.接口类型尽量使用http

JMeter接口压力测试课程入门到高级实战(目录)

章节一压力测试课程介绍1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介:讲解课程安排,使用的Jmeter版本2.常用压力测试工具对比简介:目前用的常用测试工具对比章节二 JMeter4.x基础知识讲解和压测实操3.Jmeter基本介绍和使用场景4.本地快速安装Jmeter4.x简介:GUI图形界面的安装1.需要安装JDK8.或者JDK9,JDK102.快速下载5.Jmeter目录文件讲解简介:讲解jmeter解压文件里面的各个目录,文件等6.Jmeter语言版本中英文切