博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3,接口自动化第三次重构整体框架搭建和集成
阅读量:6697 次
发布时间:2019-06-25

本文共 2709 字,大约阅读时间需要 9 分钟。

一,为什么要做接口自动化?

  自动化的引入是为了更高效的执行重复性的工作,在现在传统手工测试中,随着业务的复杂程度和减少人工时间成本,同时,接口测试相对容易实现自动化持续集成,UI自动(selenium的有空在写,也很简单)核心是为了缩减测试周期。本文介绍我第三次重构接口自动化的成果

二,如何设计和实现接口自动化?

  围绕着“可维护性高”和“业务覆盖率广”两项原则进行设计接口测试体系

  (1)实现整体框架思路

    这边考虑接口测试需要用到什么?

      1,接口参数

      2,接口请求地址

      3,接口返回值

    总体的来说是上诉三项,当然包括比如:头部信息,加密项和以及登录缓存项等等

    举个例子:    

1 data1={parameter:"参数",numerical :"参数2"}#入参数2 timeout=5.0#超时最大值3 url1=https://www.cnblog.com#域名4 address=/address/demo#地址5 headers={}#头部信息6 response = requests.post(url=url1+address,headers=headers,data=data1,timeout=float(timeout)#发起POST请求7 returnJson=response.json#返回请求

     在上诉的一个简单的例子中可以看出一个接口需要的定义的基础的所包含的内容

       这个基础上我们要需要怎么去变成高维护性的呢,答案就是封装

                 我们需要的是进行分层封装,分离结构

     需要把数据作为一层,请求作为一层,和结果作为一层

     a),数据作为一层,按照常规的还是采用excel进行提取数据,方便维护

     b),请求一层,可以再次拆分,

        1.因为http可能有https,因为在不同环境局域网环境和外网环境的考虑。

        2.当然你的域名也是一样,在本地环境有可能是192.168.1.1,而外网环境就是www.cnblog.com

        3.请求的地址,上面说的是封装,当然你域名和http都是固定的,变化的只有你的请求地址和参数,所以要考虑你的地址要如何的封装?

        上诉的说明会让你想到什么???

        没错就是-----配置文件

        4.发送请求,发送请求可能包含的是什么?post?get?put?......既然数据作为一层了我们调用也无非是去发送请求,那么HTTP发送请求自然也作为封装的一层

     c),结果一层当然是记录结果,你可以包含发送邮件 和 log日志进行记录信息以及通过图标显示你测试的case的成功或者失败~

(2)实现整体框架内容 

  上诉介绍了大致设计的想法,接下来如何真正去实现呢?需要用到什么呢?

  下图是我可能会用到的包:

         

  当然不用每一个都下载,我们主要用到的东西还是 xlwt  paramunittest  request  unittest  ElementTree,还有HTMLTestRunner

    

 

 

  我们先从配置文件上说起吧~

  跟设计思路一样config.ini是记录

  

 

  第二个是interfaceURL.xml,下图的这就是配置一个name用于寻找到指定这个接口

  比如我的接口是地址是###/address/preson/xiaocui 你就可以这样写:

 

address
person
xiaocui

      

      sql也是同理

      

 

   接下来我们看如何去封装get,pos等请求的

  

       

 

   get,post方法类似我们这边说POST方法

def post(self):            urllib3.disable_warnings()#这行代码是为了屏蔽SSL证书的警告,不用管        try:            response = requests.post(self.url, headers=self.headers, data=self.data, timeout=float(timeout),\                                     verify=False, cookies=self.cookies)            # response.raise_for_status()            return response        except TimeoutError:            self.logger.error("Time out!")            return None

  这里面都是很正常的是去调用request的POST方法,在verify=False,是为了关闭HTTPS的可能会过期证书导致的异常,cookies是有些接口可能会需要进行登录信息后才能进行调用

   那问题来了 我的参数哪里来呢?

  下面就是参数的调用 ,self指的类本身或者函数的本身,所以我们需要吧你调用的参数集成在这个类里面去调用

       

   

 下面就是经典的unittest case类啦~

   

  从上而下来看,读取数据,展开数据,将数据集合。

  该接口的例子是需要登录信息的所以会有cookies

  

 

  result 在excel表中0是执行这条用例 其他代表不执行。

  我继承unittest类后继续重写一次setup方法,提高代码的复用性,其他的可随意参考根据需求和业务进行

 

数据层是这样的:

       

 

 

 

三,接口自动化结果生成

图标:

 

  

 

 邮件通知:

 

 

 

 

 

总结:

  可以直接在excel表中填写数据,只需要将所有前期的接口进行配置完全即可,后期维护只用在excel中进行,如果进行书写testCase类,也不用管环境,只需要你调用一下方法和即可,利于维护快速多人开发!

欢迎大家给我提意见~~共同学习。

 

 

声明:

本文结合各路测试大神,和JAVA后台开发提供思路,再次感谢~

本文书写纯手打,转载时请联系我 870801585@qq.com

 

 

  

转载于:https://www.cnblogs.com/cuihaiqi/p/9269627.html

你可能感兴趣的文章
不错的电子书下载网站
查看>>
构建SAN网络存储
查看>>
HAProxy用法详解 全网最详细中文文档
查看>>
查看及修改MYSQL最大连接数
查看>>
shell循环结构之while循环
查看>>
重复编辑命令行
查看>>
Saltstack 报错 python-crypto randomPool_DeprecationWarning:
查看>>
UITableView 重用cell方法edequeueReusableCellWithIdentifier,出现错误
查看>>
匿名包装器(function(){})()
查看>>
我的友情链接
查看>>
Cisco 3560 配置DHCP Relay实例
查看>>
四元數與旋轉
查看>>
unbuntu使用经典界面
查看>>
开始nodejs+express的学习+实践(8)
查看>>
通过VB向SQL Server数据库中录入数据
查看>>
读取properties
查看>>
H3C s5500-SI-EI系列交换机 WEB界面登录配置
查看>>
前端测试利器--Browser-Sync启动命令
查看>>
我的友情链接
查看>>
电脑无法启动故障的10种解决方法
查看>>