开源接口测试框架之公司应用篇
Posted 雷子说测试开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了开源接口测试框架之公司应用篇相关的知识,希望对你有一定的参考价值。
最近一段时间,笔者一直在和我们公司的研发童鞋,运维童鞋等一起努力来搞我们公司的接口,每晚的那个点我们就开始了我们的工作,由于是后期补做,所以在时间上也是那么匆忙,闲暇之余,笔者想着怎么对接口进行详细的功能测试,需要进行一系列的工作,来简化我们测试的工作量,要做的太多,只可惜我们测试太少,精力有限。可是我们老大让我们做的很多。哎,啥都别说了,还是专心的做自己工作吧,
本来想着调研网上很多的工作呢,或者别人的开源框架呢,后来想想自己之前也做过这么的一个的工具,于是乎,我就开始对自己这个接口框架进行了改版,针对我们公司的接口进行了详细的梳理,其实我们的接口和市面上的很多接口其实还是很相似的。都是http请求,格式还是json的格式,这对于我来说是很开心的,和我当初的接口开源的框架来说的初衷是一样的,这样一来就可以节省我一大部分时间,少去了代码封装等一系列的问题,节省了一大部分的时间,现在要做的就是把这个框架怎么能更快的代入到我们的测试中,也就是对开源的测试框架进行简单的改装,使之满足我们日常的测试工作,降低我们的研发成本。
关于测试环境的切换,我们的环境分为,测试环境-仿真环境-预发布环境-正式环境,对三个环境的接口的url进行研究,就是我们之前所说的baseurl+路径 来处理的我们的接口,那么我对于环境的切换采用的就是在配置文件中配置基础的baseurl来切换环境。关于切换环境,TesterHome 上面有一篇文档对中国移动互联网测试开发大会一些公司的接口测试进行了分析,其中接口测试上有提到接口测试环境切换方法 , 可以看下这篇文章
解决了环境切换的问题呢,接下来我们要做的就是对测试框架整体的脚本进行重构,其实主要是对一些封装的脚本上的重构。
关于requests的封装的改进如下。
# -*- coding: utf-8 -*-# @Author : leiziimport requests,jsonfrom common.log import LOG,logger @logger('请求')class reques(): def get(self, url,headers,params):#get消息 try: r = requests.get(url, headers=headers,params=params) r.encoding = 'UTF-8' json_response = (r.json()) return json_response except Exception as e: LOG.info('测试出错了,原因:%s'%e) return {} def post(self, url, params,headers):#post消息 try: r =requests.post(url=url,data=params,headers=headers) json_response = r.json() return json_response except Exception as e: LOG.info('测试出错了,原因:%s' % e) def delfile(self,url,params,headers):#删除的请求 try: del_word=requests.delete(url=url,params=params,headers=headers) json_response=json.loads(del_word.json()) return json_response except Exception as e: LOG.info('测试出错了,原因:%s' % e) print('del请求出错,原因:%s' % e) return {} def putfile(self,url,params,headers):#put请求 try: data=json.dumps(params) me=requests.put(url,data) json_response=me.json() return json_response except Exception as e: LOG.info('测试出错了,原因:%s' % e) print('put请求出错,原因:%s'%e) return {}
在改装后的requests的后,有对其进行进一步的封装。
from common.test_requests import reques reques=reques()def testapi(url,connent,key,fangshi): if fangshi=='POST'or fangshi =='post': me=reques.post(url=url,params=connent,headers=key) return me elif fangshi=="GET" or fangshi=='get': me=reques.get(url=url,headers=key,params=connent) return me else: pass
有人会问我你怎么就封装了这么几个简单的方法呢,其实呢,因为我们公司的就接口目前就已经能够满足我们基本的使用。
经过改写后,然后我有对整个框架进行了一次的调试,在调试中,发现对case的文件里面发生着不一样,于是乎,有对case文件进行了进一步的优化,这里就不在放置case文件了,因为牵涉到公司的。 通过最后的调试,发现整体的架构已经完成,
接下来就是写用例运行框架就可以。
那么我来总结下,我对接口框架的引入的过程进行了梳理。
第一,用一则脚本代码先对公司的某一接口进行测试,脚本语言为你或者你部门熟悉的。目的,了解你们公司的接口所需要的参数以及一些需要传递的准确的信息。
第二,梳理公司整体的接口,看是否都是一类的,比如基于baseurl+路径,请求方式。等。
第三,寻找适合自己公司的接口测试开源测试框架,可以去testerhome,github等网站去找,
第四 通读框架的代码,找出框架与公司接口测试所用到的不同点。
第五,修改框架,对不同点,对于好的地方进行修改,满足公司的接口测试工作需求,
第六,增加自己想要的内容,定制化本公司特色需求
第七,调试,每次脚本的开发,优化过程,一定不要忘记调试,代码的调试很重要。
第八,编写测试用例,运用框架进行接口测试。
第九,总结框架文档,包括使用文档,同时培训本部门的内部使用,
第十,总结整个过程,并且对老大进行汇报,及时维护跟进测试框架的使用情况。
以上步骤有一定的先后顺序,但是不一定都要用,这些都是我基于我自己的对开源的接口测试框架引用过程中的总结。实际情况中去改进我们的整个流程和环节。
作者寄语:
前进的道路我们充满着迷茫,
前进的每一步我们都会有收获。
路在脚下,我们决定不了我们的出身,但是我们可以努力改变我们未来。
告别昨天失败的自己,努力拼搏今天,成就美好明天
有疑问可以加我95294386 或者我的qq群194704520
希望大家一起从菜鸟飞到更高的地方,
以上是关于开源接口测试框架之公司应用篇的主要内容,如果未能解决你的问题,请参考以下文章
走进Java接口测试之测试框架TestNG数据驱动(入门篇)
Python接口自动化测试框架(工具篇)-- 接口测试工具HTTPRUNNER