• 接口测试框架实战(四) | 通用 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 库。从而发起各种各样的请求,实现了通用接口协议的定义与封装。
    更多接口测试框架实战进阶内容,我们在后续文章分享。

  • 相关阅读:
    部署 AppGlobalResources 到 SharePoint 2010
    还原一个已删除的网站集
    使用仪表板设计器配置级联筛选器 (SharePoint Server 2010 SP1)
    File or arguments not valid for site template
    Pex and Moles Documentation
    Content Query Webpart匿名访问
    Running Moles using NUnit Console from Visual Studio
    Calling a WCF Service using jQuery in SharePoint the correct way
    Updating Content Types and Site Columns That Were Deployed as a Feature
    asp.net中判断传过来的字符串不为空的代码
  • 原文地址:https://www.cnblogs.com/hogwarts/p/13808802.html
Copyright © 2020-2023  润新知