专栏首页测吧测试开发接口测试框架实战(四) | 通用 API 封装实战
原创

接口测试框架实战(四) | 通用 API 封装实战

本文节选自霍格沃玆测试学院内部教材,文末链接进阶学习。

在 APIObject 设计模式中,需要一个 base_api 作为其他 API 步骤的父类,把通用功能放在这个父类中,供其他的 API 直接继承调用。这样做的优点在于,减少重复代码,提高代码的复用性。

通用 API 封装实战

在上一章节在演示使用 API-Object 设计模式对脚本进行改造时提到了 base_api。不过在上一章,仅仅只是封装了一个 utils 中的一个简单方法。并没有完全体现出 base_api 的实际作用。

接下来,我们通过通用接口协议的定义与封装实战,来实际体会一下 base_api 的巧妙之处。

  • base_api.py

在代码内,对 request 进行一层封装,当然在这里还看不出来具体的优势:

import requests

class BaseApi:

    def request(self, method, url, **kwargs):
        self.json_data = requests.request(method=method, url=url, **kwargs)
        return self.json_data
  • wework.py

继承于类 BaseApi,可以直接调用父类中的 request 方法(不需要导入 requests 库),从而发起一个 get 请求:

from test_interface.test_wework.api.base_api import BaseApi

class WeWork(BaseApi):
    corpid = "ww93348658d7c66ef4"
    contact_secret = "T0TFrXmGYel167lnkzEydsjl6bcDDeXVmkUnEYugKIw"
    token = dict()
    token_url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken"

    def get_access_token(self):
        r = self.request(method="get", url=self.token_url,
                         params={"corpid": self.corpid, "corpsecret": self.contact_secret})
        return r.json()
  • test_wework.py

继承于类 WeWork,主要目的只是为了检查上面的 get_access_token(self) 是否成功:

from test_interface.test_wework.api.wework import WeWork

class TestWeWork(WeWork):

    def test_get_access_token(self):
        r = self.get_access_token()
        assert r["errcode"]==0

以上,在上面的案例中,在 base_api.py 中对 requests 进行了多一层的封装,这样只要是属于 BaseApi 这个类的子类,都可以无需引用而直接调用 requests 库。从而发起各种各样的请求,实现了通用接口协议的定义与封装。

更多接口测试框架实战进阶内容,我们在后续文章分享。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 接口测试框架实战(三) | APIObject 模式、原则与应用

    在普通的接口自动化测试中,如果接口的参数,比如 url,headers 等传参改变,或者测试用例的逻辑、断言改变,那么整个测试代码都需要改变。APIObject...

    霍格沃兹测试开发
  • 测试面试 | Python 算法与数据结构面试题系列二(附答案)

    ⬆️ 关注 @霍格沃兹测试学院 公众号,回复「面试」,领取 BAT 大厂测试面试真题专辑。

    霍格沃兹测试开发
  • Python 自动化测试(三): pytest 参数化测试用例构建

    在之前的文章中主要分享了 pytest 的实用特性,接下来讲 Pytest 参数化用例的构建。

    霍格沃兹测试开发
  • Python模块——unittest 单

    之所以称为框架是它代替开发人员完成了一些调用、IO等与单元测试无直接关系的支撑代码,让开发人员可以专注与测试用例的编写,简化单元测试工作。

    py3study
  • python接口自动化(二十四)--unittest断言——中(详解)

      上一篇通过简单的案例给小伙伴们介绍了一下unittest断言,这篇我们将通过结合和围绕实际的工作来进行unittest的断言。这里以获取城市天气预报的接口为...

    北京-宏哥
  • 镁客请讲 | 星瀚资本杨歌:VC投资的本质是行业价值的判断

    一直以来,镁客网很少会在请讲栏目中对投资人进行采访。而在今天,这个惯例将被星瀚资本打破。他们投资过与豆瓣音乐合并重组的V.Fine Music(现已更名为DNV...

    镁客网
  • linux nginx安装HttpGuard防止CC攻击

    image.png 之前说了安装verynginx来进行cc防御和防火墙,虽然功能强大,还有控制面板,但是个人就只是防御下cc,还是找个简单的好了。 Http...

    速企云
  • iOS-app证书配置和发布流程详解

    用户1890628
  • Spark Client启动原理探索

    经过几天闲暇时间的学习,终于又理解的深入了一些,关于Spark Client如何提交作业也更清晰了点。 在整体的流程图上是这样的: ? 大体的思路就是...

    用户1154259
  • 我佛了!用KNN实现验证码识别,又 Get 到一招!

    验证码使我们生活中最为常见的防治爬虫和机器人登录攻击的手段,一般的验证码主要由数字和字母组成,故我们可以设想:我们是否可以根据文本识别训练模型进行识别验证码呢?...

    AI科技大本营

扫码关注云+社区

领取腾讯云代金券