天天看點

接口測試架構實戰(四) | 通用 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 庫。進而發起各種各樣的請求,實作了通用接口協定的定義與封裝。

更多接口測試架構實戰進階内容,我們在後續文章分享。

更多技術文章分享及測試資料

繼續閱讀