零基礎小白(十四)replace函數(shù)替換accessToken參數(shù)化

零基礎小白 接口自動化測試集錦: http://www.itdecent.cn/nb/49125734
Excel讀寫: 參考《Excel辦公自動化》集錦分享 http://www.itdecent.cn/nb/49019927

實戰(zhàn)思路: SDK登錄成功后接口返回requestToken,再通過requestToken獲取游戲接口需要的accessToken,而accessToken值是固定唯一不變,貫穿整個游戲接口。使用Excel維護多個接口用例,并把accessToken進行參數(shù)化,因每次SDK登錄后獲取一次最新的accessToken,故要使用replace函數(shù)進行實時替換。

腳本設計思路

參考代碼架構思路圖及明細說明圖


代碼架構思路圖.png
  1. Base.py:配置信息代碼: 參考圖1

    圖片1.png

  2. ExcelConfig.py:Excel用例列表頭維護:參考圖2

    圖片2.png

  3. header_Base.py:SDK登錄信息配置維護: 參考圖3

    圖3.png

  4. Conf.py:讀取yaml配置文件代碼: 參考圖4

    圖4.png

  5. data目錄:放置維護接口測試用例文件,如Excel: 參考圖5

    圖5.png

  6. handler目錄:工具類:例如Excel讀取、yaml讀取、requests請求等系列封裝: 參考圖6

    圖6.png

  7. log日志目錄:存放日志信息: 參考圖7

    圖7.png

  8. Public_Util.py:公共方法代碼:整合工具類封裝、配置項讀取等-簡化代碼輸出: 參考圖8

    圖8.png

  9. testcase目錄:存放測試用例代碼: 參考圖9

    圖9.png

代碼思路拆分講解

Excel封裝、yaml讀取、requests請求封裝、基礎配置信息,前面都有講解,不再復述,請參考
接口自動化文集 http://www.itdecent.cn/nb/49125734,本篇重點分享中間層代碼封裝調用、replace函數(shù)替換。

中間層代碼Public_Util.py

目的是減少封裝代碼的調用,相當于把先前Excel封裝、yaml讀取、requests請求封裝、基礎配置信息進行二次封裝,成為公共封裝代碼,方便調用,代碼簡潔,腳本設計思路如下:

  1. 初始化加載Excel數(shù)據(jù)
  2. 初始化加載yaml數(shù)據(jù)
  3. 初始化加載mysql數(shù)據(jù)
  4. 初始化加載日志配置

初始化加載數(shù)據(jù)信息

class Handler:
    """初始化所有的數(shù)據(jù)。在其他的模塊當中重復使用。是從handler當中實例化對象。"""
    # 加載 python 配置項
    conf = config

    # 獲取YAML 數(shù)據(jù)
    yaml = yaml_util.YamlReader(conf._confyml_file).data()

    # 加載excel 數(shù)據(jù)
    __excel_path = conf.DATA_PATH
    # print(__excel_path)
    __excel_file = yaml["excel"]["file"]
    # print(__excel_file)
    excel = excel_util.ExcelHandler(os.path.join(__excel_path, __excel_file))
    # result = excel.read_data('landlords-ad-api')
    # print(result)
初始化加載數(shù)據(jù).png

設計登錄腳本獲取到accessToken

accessToken是唯一固定值,貫穿整個游戲接口,每次登錄的獲取的accessToken值不同,所以游戲多個接口不能每次都登錄,這樣接口校驗的數(shù)據(jù)信息不準確,代碼繁瑣。所以需要封裝好固定的唯一 accessToken值,故腳本設計如下:

  • 獲取登錄的result_token
  • 通過result_token返回accessToken值
  • 寫個方法讀取唯一的accessToken值
  • 唯一的accessToken值使用replace函數(shù)替換Excel參數(shù)化的#accessToken#值

第1步: 讀取唯一的accessToken值

def test_login():
    #定義測試數(shù)據(jù)
    base_url = url_path + "/member/api/mi/login" # 拼接url
    #發(fā)送Post請求
    header = get_SDK_header()
    params = get_params()
    r = requests.post(url=base_url, headers=header, json=params, verify=False)
    #輸出結果
    result = r.json()
    """
    利用jsonpath抓取多層級json嵌套字典值
    """
    result_token = jsonpath(result ,"$..requestToken")[0]
    return result_token

def get_accesstoken():
    base_url = url_path + "/member/api/login/accessToken"  # 拼接url
    header = get_SDK_header()
    result_token = test_login()
    params = {"deviceType": 2, "requestToken": result_token}
    r = requests.post(url=base_url, headers=header, json=params, verify=False)
    result = r.json()
    """原始方法獲取"""

    access_token = result['data']['accessToken']
    return access_token

第2步: 寫個方法讀取唯一的accessToken值

    # 使用裝飾器
    @property
    def access_token(self):
        return get_accesstoken()

    def result_token(self):
        return test_login()

第3步: Excel參數(shù)化維護測試用例

Excel參數(shù)化維護測試用例.png

第4步: 公共封裝的函數(shù)讀取參數(shù)化的Excel用例

讀取Excel用例.png

第5步: 重點--使用replace函數(shù)替換accessToken參數(shù)化

        if "#accessToken#" in json.dumps(headers):
            header = headers.replace("#accessToken#", self.accesstoken)
        headers = header
        # headers = json.loads(header)
        # print(headers)
        # return headers

        header = Base.json_parse(headers)
        cookie = Base.json_parse(cookies)
        res = self.run_api(url, method, params, header, cookie)
        print("用例執(zhí)行結果: %s" % res)

第6步: 使用公共封裝的函數(shù)發(fā)送request接口請求執(zhí)行接口用例

       header = Base.json_parse(headers)
        cookie = Base.json_parse(cookies)
        res = self.run_api(url, method, params, header, cookie)
        print("用例執(zhí)行結果: %s" % res)
接口執(zhí)行結果.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉變要...
    余生動聽閱讀 10,920評論 0 11
  • 彩排完,天已黑
    劉凱書法閱讀 4,503評論 1 3
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,959評論 2 7

友情鏈接更多精彩內容