开源接口测试框架之公司应用篇

发表于:2019-11-15 14:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:雷子V    来源:雷子说测试

  最近一段时间,笔者一直在和我们公司的研发童鞋,运维童鞋等一起努力来搞我们公司的接口,每晚的那个点我们就开始了我们的工作,由于是后期补做,所以在时间上也是那么匆忙,闲暇之余,笔者想着怎么对接口进行详细的功能测试,需要进行一系列的工作,来简化我们测试的工作量,要做的太多,只可惜我们测试太少,精力有限。可是我们老大让我们做的很多。哎,啥都别说了,还是专心的做自己工作吧,
  本来想着调研网上很多的工作呢,或者别人的开源框架呢,后来想想自己之前也做过这么的一个的工具,于是乎,我就开始对自己这个接口框架进行了改版,针对我们公司的接口进行了详细的梳理,其实我们的接口和市面上的很多接口其实还是很相似的。都是http请求,格式还是json的格式,这对于我来说是很开心的,和我当初的接口开源的框架来说的初衷是一样的,这样一来就可以节省我一大部分时间,少去了代码封装等一系列的问题,节省了一大部分的时间,现在要做的就是把这个框架怎么能更快的代入到我们的测试中,也就是对开源的测试框架进行简单的改装,使之满足我们日常的测试工作,降低我们的研发成本。
  虽然整个框架是我自己开发的,自己设计的,并且得到了很多读者的反馈,但是在最初想引进我们公司的测试的过程中呢,我还是对这个框架进行了一次代码上的重新阅读,梳理了框架的点,然后对我们公司的现有的接口进行了梳理,其实我之前开源的框架没有考虑到切换环境这个情况,实际我们公司的接口是有环境的切换,在我们的接口的测试文档上面给了接口的url地址的变化的规律,其实针对我们的app的接口,我们就是baseurl+路径来处理的,然后看了下我们接口文档,对于请求头我们公司有着自己的设计,还有对传递的参数我们公司的也进行的规定,我进行了梳理,梳理后,对比我的接口测试框架的进行了改造。
  关于测试环境的切换,我们的环境分为,测试环境-仿真环境-预发布环境-正式环境,对三个环境的接口的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等网站去找,
  第四  通读框架的代码,找出框架与公司接口测试所用到的不同点。
  第五,修改框架,对不同点,对于好的地方进行修改,满足公司的接口测试工作需求,
  第六,增加自己想要的内容,定制化本公司特色需求
  第七,调试,每次脚本的开发,优化过程,一定不要忘记调试,代码的调试很重要。
  第八,编写测试用例,运用框架进行接口测试。
  第九,总结框架文档,包括使用文档,同时培训本部门的内部使用,
  第十,总结整个过程,并且对老大进行汇报,及时维护跟进测试框架的使用情况。
  以上步骤有一定的先后顺序,但是不一定都要用,这些都是我基于我自己的对开源的接口测试框架引用过程中的总结。实际情况中去改进我们的整个流程和环节。

     本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号